Как использовать CMAKE_CUSTOM_TARGET - PullRequest
1 голос
/ 10 мая 2011

Фактически я борюсь с CMAKE_CUSTOM_COMMAND.На самом деле я пытаюсь определить отдельную цель make для моих демонстрационных источников, пока у меня есть зависимости, которые я могу решить только после «обычной» сборки, когда генерируется какой-либо файл.Эта цель должна выполнить несколько шагов после любой обычной сборки:

  1. Компилировать источники
  2. Создать исполняемые файлы

До этого момента все работало нормально, используя команду add_subdirectory сотдельные файлы CMakeLists, но это не удается, когда я пытаюсь решить зависимости, которые еще не созданы (т.е. скопировать dll на платформе Windows в демонстрационный исполняемый каталог dir)

  1. Копировать зависимости (dll и т. д.)

Я пытался использовать команды CMAKE_CUSTOM_TARGET и CMAKE_CUSTOM_COMMAND.Но я терплю неудачу.Как я могу вызвать сборку моих демонстрационных источников, используя отдельную цель?

Спасибо за любую помощь.С наилучшими пожеланиями.

1 Ответ

3 голосов
/ 11 мая 2011

Чтобы создать одну цель за другой, вы можете использовать команду cmake add_dependencies , специально разработанную для этой цели.

set (MY_LIB_DEPS
 target1
 target2
 #...
 targetn)

add_library(MY_LIB source.cpp)
target_link_libraries(MY_LIB ${MY_LIB_DEPS} 3rd_party_lib)
add_dependencies(MY_LIB ${MY_LIB_DEPS})

Также копирование dll и исполняемых файлов обычно выполняется во время установки , не сборка (Использование make - при выполнении команды make install сразу после make).Для этого используйте команду install .Например, для установки исполняемого файла его можно использовать так:

add_executable(my_exec my_exec_source.cpp)
target_link_libraries(my_exec ${MY_EXEC_DEPS})
#...
install(TARGETS my_exec RUNTIME
 DESTINATION ${MY_PROJECT_EXEC_INSTALL_PATH}
 RENAME "${MY_PROJECT_PREFIX}-main_exec")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...