cmake ADD_EXECUTABLE 无法设置“../bin/xxx”

cmake ADD_EXECUTABLE cannot set "../bin/xxx"

我运行在路径“${PROJECT_NAME}/build”中生成可执行文件,我想在“${PROJECT_NAME}/bin”中生成可执行文件而不是“ ${PROJECT_NAME}/build".

当我使用“ADD_EXECUTABLE(../bin/${PROJECT_NAME} ${sources})”时,我得到了错误: 目标名称“../bin/xxxx”保留或对某些 CMake 功能无效,例如生成器表达式,并且可能导致未定义的行为。

然后我改成“ADD_EXECUTABLE(${PROJECT_NAME} ${sources})”,通过了,但是生成在“${PROJECT_NAME}/build” .

我能做什么?

尝试使用自定义命令 post 构建来复制可执行文件:

set(COPY_TO_PATH ${PROJECT_NAME}/bin)
add_custom_command(TARGET xxx POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy
                       ${PROJECT_NAME}/bin/xxx
                       ${COPY_TO_PATH})

add_executable,以及 add_librarytarget_include_directories 等其他函数需要目标名称,而不是路径。

要更改输出文件的位置,建议您更改每个目标的一些属性

set_target_properties(my_target PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../bin"
        PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../bin"

还有一些属性可以控制图书馆和档案馆的去向:LIBRARY_OUTPUT_DIRECTORYARCHIVE_OUTPUT_DIRECTORY,您也可以将它们设置为其他内容