Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake:当位置不匹配时,使用add#u custom#u命令将二进制文件复制到特定位置失败';不存在_Cmake - Fatal编程技术网

Cmake:当位置不匹配时,使用add#u custom#u命令将二进制文件复制到特定位置失败';不存在

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

我正在尝试将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 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}/.
)

是的,这是我的解决办法,但我希望有更好的解决办法。谢谢你的回答!看见