CMake Multiarchitecture Compilation

Chcę wiedzieć, jak mogę napisać konfigurację CMake, która pozwala na kompilację zarówno dla architektur x86, jak i x64 przy użyciu dowolnego kompilatora i systemu operacyjnego.

Author: Raedwald, 2011-03-17

3 answers

Byłoby świetnie, gdyby CMake miał opcję 32/64bit po wyjęciu z pudełka. Tak nie jest, więc będziesz musiał zastosować jedną z różnych metod zależnych od kompilatora lub generatora. Np.:

  • GCC (na Linuksie) i kilka innych kompilatorów, np. Sun Studio. Ustaw CFLAGS i CXXFLAGS na include -m32 (32-bitowa budowa) lub -m64 (64-bitowa Budowa).

  • Windows, Visual Studio generator. Użyj 64-bitowego generatora, np.

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

    Do kompilacji 64-bitowej (x64). Pomiń "Win64" w nazwa generatora, do zbudowania dla 32 bitów

  • Mac OS X. użyj zmiennej CMAKE_OSX_ARCHITECTURES CMake.

    cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir będzie kompilować 32-bitowy build

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir skompiluje 64 bit.

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir stworzy 96-bitowe uniwersalne binaria:)

Powyższe jest nieco przeredagowane.

Http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html

 75
Author: Vladislav Vaintroub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-08 17:28:38

Istnieje CMake tutorial dostępny online, aby przejść do podstaw, jest to zaczerpnięte z książki CMake. Filozofia CMake polega na używaniu wielu katalogów kompilacji, z jednym drzewem źródłowym. Możesz więc użyć Visual Studio w systemie Windows i utworzyć katalog kompilacji przy użyciu kompilatora 32-bitowego, a drugi przy użyciu kompilatora 64-bitowego.

CMake jest przeznaczony dla dużej liczby kompilatorów i systemów operacyjnych, ale nie wspominasz, jakiego języka używasz, jakiego działania system / kompilator / architektury, o których myślisz i jeśli używasz zestawów narzędzi/bibliotek.

 3
Author: Marcus D. Hanwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-19 00:39:15

Jeśli CMAKE_OSX_ARCHITECTURES = i386 wyświetli błąd "unrecognized option-arch" zacznij od nowa i zamiast tego spróbuj:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10
 0
Author: Patrick Rose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 02:00:43