跳转到内容
新建笔记

CMake多目标构建

终端窗口
add_custom_target(copy_configs ALL
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/config"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/config" "${CMAKE_CURRENT_BINARY_DIR}/config"
COMMENT "Copying entire config folder directory to binary directory"
VERBATIM
)

通常情况下,如果你已经使用了 add_custom_command(TARGET jpbalance POST_BUILD) 来定义后处理操作,那么不需要额外通过 add_dependencies 来设置依赖项。POST_BUILD 命令会在目标 jpbalance 构建完成后自动执行,因此它本身已经隐含了依赖关系。

add_dependencies(jpbalance copy_configs) 的作用是确保 copy_configs 目标在 jpbalance 构建之前完成。如果 copy_configs 的操作已经包含在 POST_BUILD 中,或者其结果对 jpbalance 的构建没有直接影响,那么可以省略这条依赖声明。

不过,如果 copy_configs 是一个独立的目标,且需要在 jpbalance 构建之前完成(例如,jpbalance 的构建依赖于 copy_configs 的结果),那么保留 add_dependencies 是必要的。

  • 如果 copy_configs 的操作已经包含在 POST_BUILD 中,可以移除 add_dependencies(jpbalance copy_configs)。
  • 如果 copy_configs 是独立的目标,且需要在 jpbalance 构建之前完成,则需要保留 add_dependencies。

来源:CSDN 原文,首次发布于 2025-04-08。