Подтвердить что ты не робот

Сборник мультиархитектуры CMake

Я хочу знать, как я могу написать настройку CMake, которая позволяет компиляцию для архитектур x86 и x64 с использованием любого компилятора и ОС.

4b9b3361

Ответ 1

Было бы замечательно, если бы у CMake был 32/64-битный вариант из коробки. Это не так, поэтому вам нужно будет применить один из методов компилятора или генератора. Например:

  • GCC (в Linux) и некоторые другие компиляторы, например Sun Studio. Установите для CFLAGS и CXXFLAGS значение -m32 (32-разрядная сборка) или -m64 (64-разрядная сборка).

  • Windows, генератор Visual Studio. Используйте 64-битный генератор, например

    cmake -G "Visual Studio 10 Win64" path\to\source\dir

    скомпилировать 64-битную (x64). Пропустить "Win64" в имени генератора, чтобы построить для 32-битных

  • Mac OS X. Используйте переменную CMAKE_OSX_ARCHITECTURES CMake.

    cmake -DCMAKE_OSX_ARCHITECTURES=i386/path/to/source/dir скомпилирует 32-битную сборку

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64/path/to/source/dir скомпилирует 64 бит.

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386"/path/to/source/dir создаст 96-битные универсальные двоичные файлы :)

Выше слегка перефразировано.

http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-Achitectures.html

Обновление апреля 2019

Это старый ответ, некоторые вещи изменились, особенно для генератора VS на Windows.

с cmake 3.14 и установленной Visual Studio 2019

cmake -G "Visual Studio 16 2019" -A x64 path\to\source\dir

скомпилировать 64-битную (x64). Обычно вы можете опустить оба параметра -G и -A на компьютере с архитектурой x64 (вы используете ОС x64 в 2019 году, верно?)

cmake -G "Visual Studio 16 2019" -A Win32 path\to\source\dir

скомпилировать 32бит.

Ответ 2

Существует учебник CMake, доступный в Интернете, чтобы перейти к основам, это взято из книги CMake. Философия CMake заключается в использовании нескольких каталогов сборки с одним деревом источника. Таким образом, вы можете использовать Visual Studio в Windows и создать каталог сборки с использованием 32-битного компилятора, а другой - с помощью 64-битного компилятора.

CMake нацеливается на большое количество компиляторов и операционных систем, но вы не указываете, какой язык вы используете, какую операционную систему/компилятор/архитектуры вы думаете, и если вы используете какие-либо инструментальные средства/библиотеки.

Ответ 3

Если CMAKE_OSX_ARCHITECTURES = i386 дает вам ошибку "непризнанная опция -arch" start over и вместо этого попробуйте:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10