我正在尝试将cmake生成的所有二进制文件复制到特定目录。我不想使用EXECUTABLE_OUTPUT_PATH,将它们保留在构建树中,使开发更容易。
所以我使用add_custom_command添加帖子构建副本
# set the final binary dir
set(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/bin)
# get name and location of binary, namecan change with os (cf. ".exe" suffix on windows)
GET_TARGET_PROPERTY(EXAMPLE_BIN_NAME example LOCATION)
# copy bin to binary folder
ADD_CUSTOM_COMMAND(TARGET example
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)
问题是,在第一次构建时,“bin”文件夹不存在(复制失败),但“bin”文件夹就在之后创建。因此,在第二次构建时,副本可以正常工作。
有没有办法让自定义命令创建bin文件夹然后复制二进制文件? 或者是否可以使用cmake两个EXECUTABLE_OUTPUT_PATH?
谢谢!
答案 0 :(得分:18)
在调用复制命令之前,只需确保目标位置“bin”存在,即:
ADD_CUSTOM_COMMAND(TARGET example
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)