如何使用 CMAKE 从命令行在 Windows 上构建 x86 and/or x64?

How to build x86 and/or x64 on Windows from command line with CMAKE?

让 cmake 在 Windows 和 Visual Studio 上构建 x86 的一种方法如下:

  1. 开始 Visual Studio x86 的命令提示符
  2. 运行 cmake: cmake -G "NMake Makefiles" \path_to_source\
  3. nmake

让 cmake 在 Windows 和 Visual Studio 上构建 x64 的一种方法如下:

  1. 开始 Visual Studio x64 的命令提示符
  2. 运行 cmake: cmake -G "NMake Makefiles" \path_to_source\
  3. nmake

如何使用 Cmake 编译其中一个或两个架构? (比如 Visual Studio 在 IDE 中是如何做到的)

CMake 无法做到这一点。您必须生成两个单独的构建文件夹。一个用于 x86 NMake 构建,一个用于 x64 NMake 构建。您也无法使用 CMake 生成涵盖两种架构的单个 Visual Studio 项目。

要在不启动 Visual Studio 命令提示符的情况下从命令行为 32 位和 64 位构建 Visual Studio 项目,请使用常规 Visual Studio 生成器。

对于 CMake 3.13 或更新版本,运行 以下命令:

cmake -G "Visual Studio 16 2019" -A Win32 -S \path_to_source\ -B "build32"
cmake -G "Visual Studio 16 2019" -A x64 -S \path_to_source\ -B "build64"
cmake --build build32 --config Release
cmake --build build64 --config Release

对于早期版本的 CMake,运行 以下命令:

mkdir build32 & pushd build32
cmake -G "Visual Studio 15 2017" \path_to_source\
popd
mkdir build64 & pushd build64
cmake -G "Visual Studio 15 2017 Win64" \path_to_source\
popd
cmake --build build32 --config Release
cmake --build build64 --config Release

CMake 生成的项目使用 Visual Studio 生成器之一,可以使用选项 --build 后跟构建目录从命令行构建。 --config 选项指定构建配置。

尝试使用 CMAKE_GENERATOR_PLATFORM

例如

// x86
cmake -DCMAKE_GENERATOR_PLATFORM=x86 . 

// x64
cmake -DCMAKE_GENERATOR_PLATFORM=x64 . 

除了CMAKE_GENERATOR_PLATFORM变量,还有-A开关

cmake -G "Visual Studio 16 2019" -A Win32
cmake -G "Visual Studio 16 2019" -A x64

https://cmake.org/cmake/help/v3.16/generator/Visual%20Studio%2016%202019.html#platform-selection

  -A <platform-name>           = Specify platform name if supported by
                                 generator.