configuration - 在不包装脚本的情况下让 CMake 从源代码中构建

标签 configuration cmake

我试图让 CMake 构建到一个目录“build”中,如 project/build ,其中 CMakeLists.txt 位于 project/ .

我知道我可以做到:

mkdir build
cd build
cmake ../

但这很麻烦。我可以将它放在一个脚本中并调用它,但是为 CMake 提供不同的参数(如 -G "MSYS Makefiles")是不愉快的,或者我需要在每个平台上编辑这个文件。

最好我会做类似 SET(CMAKE_OUTPUT_DIR build) 的事情在主 CMakeLists.txt 中。请告诉我这是可能的,如果是这样,如何?或者其他一些源代码构建方法可以轻松指定不同的参数?

最佳答案

CMake 3.13 或更新版本支持 command line options -S-B分别指定源目录和二进制目录。

cmake -S . -B build -G "MSYS Makefiles"

这将寻找 CMakeLists.txt在当前文件夹中创建一个 build文件夹(如果尚不存在)。

对于旧版本的 CMake,您可以使用未记录的 CMake 选项 -H-B在调用 cmake 时指定源和二进制目录:
cmake -H. -Bbuild -G "MSYS Makefiles"

请注意,选项和目录路径之间不能有空格字符。

关于configuration - 在不包装脚本的情况下让 CMake 从源代码中构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143062/

相关文章:

java - 您如何在 OSGi 中正确地将 ManagedServiceFactory 实现为声明式服务?

asp.net - 管理 web.config 中的配置

Hadoop:...被复制到 0 个节点而不是 minReplication (=1)。有 1 个数据节点正在运行,并且没有节点被排除在此操作中

cmake - 如何使用 CMake 将静态库链接到可执行文件

visual-studio - 选择 "Build solution"时如何让CMake生成INSTALL

c++ - 如何使用 cmake 从主要 CMakeLists.txt 复制目标文件?

java - Spring 4 PropertySourcesPlaceholderConfigurer 无法解析跨模块的 ${..} 占位符

C++ 编译错误 : multiple definition of `main' but only 1 main function in project

c++ - 使用 ctest 时,每个测试都需要单独的文件吗?

symfony - 如何在 Symfony 4 中为应用程序实现 Configuration 和 AppExtension 类?