16

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

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

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

而不是

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

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

4

2 回答 2

28

有几种选择:

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

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

附加信息:看看这些问题:

于 2012-11-26T09:47:04.657 回答
3

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

add_custom_command(target your_target_name
          POST_BUILD
          COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)
于 2012-11-26T00:12:27.240 回答