如何在CMake中更改Win32版本的可执行输出目录?

时间:2012-11-25 23:51:38

标签: c++ visual-studio cmake

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

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

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

而不是

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

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

2 个答案:

答案 0 :(得分:22)

有几种选择:

  1. 构建
  2. 后复制可执行文件
  3. 自定义可执行文件的输出目录
  4. 构建

    后复制可执行文件

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

    使用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项目中的所有目标指定此项。建立dll时,请注意修改CMAKE_LIBRARY_OUTPUT_DIRECTORY

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

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

答案 1 :(得分:3)

最有可能的是,您需要使用单独的自定义命令复制二进制文件,该命令看起来与此类似:

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