Вы можете использовать операционные зависимости для инициирования некоторой операции после завершения ряда других операций:
let operationQueue = OperationQueue()
let completionOperation = BlockOperation {
// do something
}
for object in objects {
let operation = ...
completionOperation.addDependency(operation)
operationQueue.addOperation(operation)
}
OperationQueue.main.addOperation(completionOperation)
Вы должны использовать библиотеку CommandLine , которая встроена в LLVM. В основном, вы просто помещаете вверху .cpp-файла прохода:
#include "llvm/Support/CommandLine.h"
static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename"));
Но я рекомендую вам проверить приведенную выше ссылку, у нее есть полная ссылка + удобный раздел быстрого запуска.
В качестве примера рассмотрим встроенный проход цикла разворачивания цикла - он определяет две беззнаковые и две логические опции, расположенные вверху исходного файла, с помощью cl::opt<unsigned>
и cl::opt<bool>
.