Reputation: 15756
One way to get cmake to build x86 on Windows with Visual Studio is like so:
cmake -G "NMake Makefiles" \path_to_source\
One way to get cmake to build x64 on Windows with Visual Studio is like so:
cmake -G "NMake Makefiles" \path_to_source\
Using Cmake, how do I compile either or both architectures? (like how Visual Studio does it from in the IDE)
Upvotes: 117
Views: 186392
Reputation: 65951
This cannot be done with CMake. You have to generate two separate build folders. One for the x86 NMake build and one for the x64 NMake build. You cannot generate a single Visual Studio project covering both architectures with CMake, either.
To build Visual Studio projects from the command line for both 32-bit and 64-bit without starting a Visual Studio command prompt, use the regular Visual Studio generators.
For CMake 3.13 or newer, run the following commands:
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
For earlier versions of CMake, run the following commands:
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 generated projects that use one of the Visual Studio generators can be built from the command line with using the option --build
followed by the build directory. The --config
option specifies the build configuration.
Upvotes: 214
Reputation: 28879
Besides CMAKE_GENERATOR_PLATFORM
variable, there is also the -A
switch
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.
Upvotes: 40
Reputation: 6966
try use CMAKE_GENERATOR_PLATFORM
e.g.
// x86
cmake -DCMAKE_GENERATOR_PLATFORM=x86 .
// x64
cmake -DCMAKE_GENERATOR_PLATFORM=x64 .
Upvotes: 86