cmake - 在任何平台上从命令行选择CMake的 Release模式

标签 cmake

我希望在任何平台上通过命令行设置 CMake 的 Release模式。我发现例如here 表示不同平台上的细节略有不同。但为了简化 CI 设置,我希望在 Unix Windows 上执行相同的命令。我尝试过:

cmake . -DCMAKE_BUILD_TYPE=RELEASE
cmake --build .

但后来我进入了 Windows:

Manually-specified variables were not used by the project:

   CMAKE_BUILD_TYPE

这可能吗?如果是这样,我应该使用什么?

最佳答案

这不是 Linux 和 Windows 之间的区别。这是单配置多配置之间的区别generators .

CMake 在为不同类型的生成器配置和构建项目时使用不同的“构建类型”规范:

  1. 使用单配置生成器(例如“Unix Makefiles”),构建类型在配置阶段使用CMAKE_BUILD_TYPE变量指定:

    cmake -DCMAKE_BUILD_TYPE=Release <source-dir>
    cmake --build .
    
  2. 使用多配置生成器(例如 Visual Studio),配置阶段的构建类型是未知的:此阶段同时针对多种构建类型执行。当构建项目时,需要选择适当的构建类型,例如使用 --config 选项:

    cmake <source-dir>
    cmake --build . --config Release
    

由于构建类型是在不同阶段指定的,因此两种生成器类型很少存在单一命令集。

但是,如果在 Linux 上选择生成器“Unix Makefiles”并在 Windows 上选择生成器“NMake Makefiles”,则完全可以使用一组命令:这两个生成器都是单配置

关于cmake - 在任何平台上从命令行选择CMake的 Release模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64927326/

相关文章:

c++ - OpenAL:如何添加 ALUT

android - Gradle 无法使用 OBJECT 库构建 CMake 项目,因为它需要一个输出文件

compiler-errors - 错误 "CPU you selected does not support x86-64 instruction set"是什么意思?

c - 使用 cmake 时未定义外部变量的引用

windows - 让 CMake 在 Windows 上找到 flex

c++ - 通过 CMake 构建的 ios 上 Qt 应用程序的运行时错误

c++ - 链接到 boost python 时出错

cmake - 使用 CMake 缓存变量 "before"定义它

c++ - 编译 GLFW 时遇到问题, undefined symbol

带有具有冗余依赖项的子模块的 CMake 项目