【问题标题】:How to change the executable output directory for Win32 builds, in CMake?如何在 CMake 中更改 Win32 构建的可执行输出目录?
【发布时间】:2012-11-13 11:02:01
【问题描述】:

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

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

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

而不是

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

你会如何使用 CMake 做到这一点?

【问题讨论】:

    标签: c++ visual-studio cmake


    【解决方案1】:

    有几种选择:

    1. 编译后复制可执行文件
    2. 自定义可执行文件的输出目录

    编译后复制可执行文件

    成功构建后,您可以复制可执行文件(请参阅初学者答案),但使用安装目标可能会更好:

    使用install 命令指定将被复制到CMAKE_INSTALL_PREFIX 目录的目标(可执行文件、库、头文件等)。您可以在 cmake 的命令行(或在 cmake GUI 中)指定 CMAKE_INSTALL_PREFIX。

    为您的可执行文件自定义输出目录

    警告:不建议直接在 cmakelists.txt 中设置绝对路径。

    使用set_target_properties自定义RUNTIME_OUTPUT_DIRECTORY

    set_target_properties( yourexe PROPERTIES RUNTIME_OUTPUT_DIRECTORY E:/parsec/bin/ )
    

    作为替代方案,修改 CMAKE_RUNTIME_OUTPUT_DIRECTORY 允许您为 cmake 项目中的 all 目标指定此项。请注意在构建 dll 时也要修改 CMAKE_LIBRARY_OUTPUT_DIRECTORY

    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
    

    其他信息:看看这些问题:

    【讨论】:

    • set_target_properties 肯定是要走的路; set_properties 很容易被缓存中的另一个包含的项目覆盖。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多