Как собрать x86 и / или x64 на Windows из командной строки с помощью CMAKE?

Один из способов получить cmake для сборки x86 в Windows с помощью Visual Studio:

  1. Запустите командную строку Visual Studio для x86
  2. Запустите cmake: cmake -G "NMake Makefiles" \path_to_source\
  3. NMAKE

Один из способов получить cmake для сборки x64 в Windows с помощью Visual Studio:

  1. Запустите командную строку Visual Studio для x64
  2. Запустите cmake: cmake -G "NMake Makefiles" \path_to_source\
  3. NMAKE

Используя Cmake, как мне скомпилировать одну или обе архитектуры? (например, как Visual Studio делает это в IDE)

2 ответа

Решение

Это не может быть сделано с CMake. Вы должны сгенерировать две отдельные папки сборки. Один для сборки xake NMake и один для сборки x64 NMake. Вы также не можете создать один проект Visual Studio, охватывающий обе архитектуры, с помощью CMake.

Чтобы создавать проекты Visual Studio из командной строки как для 32-разрядных, так и для 64-разрядных систем без запуска командной строки Visual Studio, используйте обычные генераторы Visual Studio:

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

Сгенерированные CMake проекты, использующие один из генераторов Visual Studio, можно создавать из командной строки с помощью параметра --build сопровождаемый каталогом сборки. --config options определяет конфигурацию сборки.

Попробуйте использовать 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

  -A <platform-name>           = Specify platform name if supported by
                                 generator.
Другие вопросы по тегам