实际上我正在与CMAKE_CUSTOM_COMMAND斗争。实际上我尝试为我的演示源定义一个单独的make目标,而我有依赖项,我只能在“常规”构建之后解决,当生成任何文件时。在任何常规构建之后,此目标应执行一些步骤:
到目前为止,使用带有分离的CMakeLists文件的add_subdirectory命令可以正常工作,但是当我尝试解决没有的依赖关系时,这会失败 已创建(即在Windows平台上将dll复制到演示可执行目录)
我尝试过使用CMAKE_CUSTOM_TARGET和CMAKE_CUSTOM_COMMAND命令。但我失败了。如何使用separeted目标调用我的演示源的构建?
感谢您的帮助。 最好的问候。
答案 0 :(得分:3)
要一个接一个地构建一个目标,您可以使用专为此目的而设计的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 install
之后使用make - while运行命令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")