Используйте выражения генератора с add_dependencies - PullRequest
0 голосов
/ 10 июля 2019

У меня есть цель с именем Foo.Compile, которая создает мою основную программу.

add_executable(Foo.Compile ...)

Затем у меня есть целевая утилита с именем Foo.Process, которая зависит от того, какой исполняемый файл уже был собран, и выполняет некоторые действия.

add_custom_target(Foo.Process)
add_dependencies(Foo.Process Foo.Compile)

Но я хочу, чтобы это работало только в сборке релиза, потому что это медленно. Поэтому я создаю новую цель под названием Foo, которую фактически строит пользователь. В сборке релиза это должно зависеть от Foo.Process, но в других конфигурациях не должно. Поэтому я подумал, что смогу сделать это:

add_custom_target(Foo)
add_dependencies(Foo $<$<CONFIG:Release>:Foo.Process>)

Но это дает мне ошибку:

  The dependency target "$<$<CONFIG:Release>:Foo.Process>" of
  target "Foo" does not exist.

Кажется, проблема в том, что add_dependencies не поддерживает выражения генератора, поэтому я подумал, что просто буду использовать target_link_libraries, что, я знаю, делает. Но тогда возникает ошибка, что вы не можете использовать target_link_libraries с служебным проектом.

Обратите внимание, что я не могу использовать if (CMAKE_BUILD_TYPE == Release), потому что мне нужно поддерживать мультиконфигурационные генераторы, такие как Visual Studio, поэтому я думаю, что мне нужно использовать выражение генератора.

Что мне делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...