如何在Windows命令行中使用CMAKE构建x86和/或x64?

114

使用 Cmake,在 Windows 平台上如何编译 x86 和 x64 架构?(类似于 Visual Studio 在 IDE 中的操作)

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

1
我也有同样的问题,但似乎有一个解决方案:http://zeroset.mnim.org/2015/07/15/building-visual-studio-x86-and-x64-binaries-with-cmake-nmake-and-qt-creator/(而且不需要关闭提示符,并使用`nmake`)。 - Tomasz Gandor
如果您正在Windows上使用“-G“Ninja””作为生成器进行构建,则要构建32位,请使用“x86本机工具命令提示符”,要构建64位,请使用“x64本机工具命令提示符”,它将使用正确的库、编译器和链接器。 - Timothy L.J. Stewart
3个回答

208

使用CMake无法完成此操作。您需要生成两个单独的构建文件夹,一个用于x86 NMake构建,另一个用于x64 NMake构建。您不能使用CMake生成覆盖两种体系结构的单个Visual Studio项目。

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

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

cmake -G "Visual Studio 17 2022" -A Win32 -S \path_to_source\ -B "build32"
cmake -G "Visual Studio 17 2022" -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

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


有没有一种方法可以使用一个命令提示符和两个构建目录,而无需退出并启动x86提示符,然后再启动x64提示符,从而使两种架构都能够构建? - 101010

82

尝试使用CMAKE_GENERATOR_PLATFORM

例如:

// x86
cmake -DCMAKE_GENERATOR_PLATFORM=x86 . 

// x64
cmake -DCMAKE_GENERATOR_PLATFORM=x64 . 

简单而便携! - landerlyoung
在 Visual Studio 2019 中,请使用“Win32”和“Win64”代替“x86”和“x64”。 - maidamai
7
我相信针对VS 16 2019,它是指Win32x64架构。 - MHebes

39

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接