Cmake:当位置不存在时,使用add_custom_command将二进制文件复制到特定位置失败

hus*_*ush 10 cmake

我正在尝试将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}/.
)
Run Code Online (Sandbox Code Playgroud)

问题是,在第一次构建时,"bin"文件夹不存在(复制失败),但刚刚创建"bin"文件夹.所以在第二次构建时副本有效.

有没有办法让自定义命令创建bin文件夹然后复制二进制文件?或者有可能有两个EXECUTABLE_OUTPUT_PATH与cmake?

谢谢 !

sak*_*kra 19

在调用复制命令之前,只需确保目标位置"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}/.
)
Run Code Online (Sandbox Code Playgroud)