У меня есть тест (add_executable(MyTest ...)
), которому нужен файл во время выполнения. Файл создается с помощью пользовательской команды. Я хотел бы смоделировать эту зависимость времени выполнения в CMake.
В настоящее время существует зависимость времени сборки от сгенерированного файла с использованием add_dependencies(MyTest GenerateFile)
, где GenerateFile
— это настраиваемая цель, которая зависит от выходных данных настраиваемой команды. Недостаток: MyTest
не начинает компилировать код, пока GenerateFile
не завершит сборку. В этом нет необходимости — я хотел бы построить MyTest
и создать файл параллельно.
Другой вариант, который я рассматривал, заключался в добавлении новой цели MyTestAndGenerateFile
, которая зависит как от MyTest
, так и от GenerateFile
. Недостаток: вызов make MyTest
больше не создает файл. Вместо этого нужно не забыть позвонить make MyTestAndGenerateFile
.
В качестве альтернативы новую цель можно назвать MyTest
, а тест можно добавить с помощью add_executable(MyTest_Code ...)
. Недостаток: при использовании генератора Visual Studio тестовый код теперь будет находиться в проекте с именем MyTest_Code
вместо MyTest
, что нарушает соглашения об именах. Кроме того, теперь вам нужно создать проект MyTest
, но запустить проект MyTest_Code
, поэтому вы больше не можете использовать Установить как стартовый проект. .
Короче говоря, я ищу форму add_dependencies
, в которой говорится, что зависимость нужна не во время сборки, а во время выполнения.
GenerateFile
обновляется всякий раз, когда строитсяMyTest
, но безMyTest
ожидания завершенияGenerateFile
перед началом сборки. - person user1083696   schedule 19.03.2018