如何使用CMAKE_CUSTOM_TARGET

时间:2011-05-10 12:25:21

标签: cmake

实际上我正在与CMAKE_CUSTOM_COMMAND斗争。实际上我尝试为我的演示源定义一个单独的make目标,而我有依赖项,我只能在“常规”构建之后解决,当生成任何文件时。在任何常规构建之后,此目标应执行一些步骤:

  1. 编译来源
  2. 创建可执行文件
  3. 到目前为止,使用带有分离的CMakeLists文件的add_subdirectory命令可以正常工作,但是当我尝试解决没有的依赖关系时,这会失败 已创建(即在Windows平台上将dll复制到演示可执行目录)

    1. 复制依赖项(dlls等)
    2. 我尝试过使用CMAKE_CUSTOM_TARGET和CMAKE_CUSTOM_COMMAND命令。但我失败了。如何使用separeted目标调用我的演示源的构建?

      感谢您的帮助。 最好的问候。

1 个答案:

答案 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")