Cmake:当位置不匹配时,使用add#u custom#u命令将二进制文件复制到特定位置失败';不存在
我正在尝试将cmake生成的所有二进制文件复制到特定目录。我不想使用可执行的输出路径,将它们保留在构建树中可以使开发更容易 因此,我使用add_custom_命令添加生成后副本Cmake:当位置不匹配时,使用add#u custom#u命令将二进制文件复制到特定位置失败';不存在,cmake,Cmake,我正在尝试将cmake生成的所有二进制文件复制到特定目录。我不想使用可执行的输出路径,将它们保留在构建树中可以使开发更容易 因此,我使用add_custom_命令添加生成后副本 # 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 win
# 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创建两个可执行的输出路径
谢谢 在调用copy命令之前,只需确保目标位置“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}/.
)
是的,这是我的解决办法,但我希望有更好的解决办法。谢谢你的回答!看见