C++ 如何在CMake中更改Win32生成的可执行输出目录?

C++ 如何在CMake中更改Win32生成的可执行输出目录?,c++,visual-studio,cmake,C++,Visual Studio,Cmake,我的问题是: 我正在使用VisualStudio2010开发一个小型解析器。 我使用CMake作为构建配置工具 但我发现默认的可执行构建行为不方便。 我想要的是,让我的最终课程位于: E:/parsec/bin/<exe-name>.<build-type>.exe E:/parsec/bin/.exe 而不是 E:/parsec/bin/<build-type>/<exe-name>.exe E:/parsec/bin/.exe 您将如何

我的问题是: 我正在使用VisualStudio2010开发一个小型解析器。 我使用CMake作为构建配置工具

但我发现默认的可执行构建行为不方便。 我想要的是,让我的最终课程位于:

E:/parsec/bin/<exe-name>.<build-type>.exe
E:/parsec/bin/.exe
而不是

E:/parsec/bin/<build-type>/<exe-name>.exe
E:/parsec/bin/.exe

您将如何使用CMake实现这一点?

您可能需要使用一个单独的自定义命令来复制二进制文件,该命令与下面的命令类似:

add_custom_command(target your_target_name
          POST_BUILD
          COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)

有几种选择:

  • 生成后复制可执行文件
  • 自定义可执行文件的输出目录
  • 生成后复制可执行文件 成功构建后,您可以复制可执行文件(参见初学者答案),但使用安装目标可能更好:

    使用该命令指定要复制到目录的目标(可执行文件、库、标题等)。您可以在CMAKE的命令行(或在CMAKE GUI中)上指定CMAKE_INSTALL_前缀

    自定义可执行文件的输出目录 警告:不建议直接在cmakelists.txt中设置绝对路径

    用于自定义

    或者,修改允许您为cmake项目中的所有目标指定此选项。在构建DLL时,也要注意修改

    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
    
    其他信息:看看这些问题:


    设置目标属性
    无疑是一条路要走;set_属性很容易被缓存中包含的另一个项目覆盖。
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )