我目前正在构建一个带有插件结构的项目。我正在使用 CMake 编译项目。插件在单独的目录中编译。我的问题是 CMake 将二进制文件和插件、动态库编译并保存在源代码的目录结构中。如何让 CMake 将文件保存在 ./bin 目录之类的目录中?
原文由 Martin Kristiansen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我目前正在构建一个带有插件结构的项目。我正在使用 CMake 编译项目。插件在单独的目录中编译。我的问题是 CMake 将二进制文件和插件、动态库编译并保存在源代码的目录结构中。如何让 CMake 将文件保存在 ./bin 目录之类的目录中?
原文由 Martin Kristiansen 发布,翻译遵循 CC BY-SA 4.0 许可协议
对 serg06 的回答 进行了进一步改进:
要强制三个路径按原样用于所有生成器和所有构建配置,您可以添加一个空的生成器表达式,如下所示:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "$<0:>${CMAKE_BINARY_DIR}/bin") # .exe and .dll
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "$<0:>${CMAKE_BINARY_DIR}/lib") # .so and .dylib
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "$<0:>${CMAKE_BINARY_DIR}/lib") # .lib and .a
这具有强制 Visual Studio 生成器按原样使用指定路径的副作用,而不是附加特定于配置的子目录,而无需 foreach
循环。
原文由 BTJ 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.1k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
4 回答796 阅读
1 回答873 阅读
1 回答902 阅读
1 回答672 阅读
1 回答779 阅读
正如奥列格的回答一样,我相信要设置的正确变量是
CMAKE_RUNTIME_OUTPUT_DIRECTORY
。我们在根 CMakeLists.txt 中使用以下内容:您还可以基于每个目标指定输出目录:
在这两种情况下,您都可以将
_[CONFIG]
附加到变量/属性名称以使输出目录适用于特定配置(配置的标准值是DEBUG
,RELEASE
,MINSIZEREL
和RELWITHDEBINFO
)。