CMake Мультиархитектура Компиляция - PullRequest
45 голосов
/ 17 марта 2011

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

Ответы [ 3 ]

79 голосов
/ 19 марта 2011

Было бы замечательно, если бы у 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-битных.

3 голосов
/ 19 марта 2011

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

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

0 голосов
/ 15 июля 2016

Если CMAKE_OSX_ARCHITECTURES = i386 выдает ошибку «нераспознанная опция -arch», начните сначала и вместо этого попробуйте:

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