c++ - 如何在 CMake 中更改 Win32 构建的可执行输出目录?

标签 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 做到这一点?

最佳答案

有几种选择:

  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 目标指定此项。注意修改 CMAKE_LIBRARY_OUTPUT_DIRECTORY构建 dll 时也是如此。

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

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

关于c++ - 如何在 CMake 中更改 Win32 构建的可执行输出目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556885/

相关文章:

visual-studio - Visual Studio 11 电动工具 checkin 策略

c++ - Google 测试独立项目 - 如何让测试针对 C++ 项目运行

c++ - while 循环不检查或条件

c++ - 为什么 Valgrind 声明我的 std::map<T, T> 实现产生了内存泄漏?

.net - 是否创建一个已经包含Nuget包引用的Visual Studio项目模板?

c# - 为什么 visual studio 2012 找不到我的测试?

c++ - 无法包含 Clion 库中的文件

c++ - Boost.Tests 入口点在哪里?

c++ - 将取消引用 Char 迭代器转换为 int C++

c++ - C++代码设计中的多代理系统