Je voudrais proposer un moyen qui construit toujours ma cible comme un exécutable exécutable 32 bits ou toujours 64 bits avec cmake indépendant du système hôte (Ajout de l'indicateur "-m32" ou "-m64" pour gcc, pas sûr que faire pour les autres compilateurs).
Je peux penser à trois façons de procéder, laquelle dois-je utiliser?
Dans mon cas, la construction forcée 32 bits sera la valeur par défaut et devrait être facile à utiliser. Une construction forcée 64 bits est également utile dans certains cas et ne devrait pas être trop difficile. L'utilisation de la largeur de bits du système hôte est rarement logique pour mon cas et je ne veux pas le prendre en charge.
J'ai trouvé une question connexe ici ( La bonne façon de forcer une compilation 32 bits en utilisant CMake ) mais les réponses discutent principalement de la façon dont cela peut être fait, pas de la meilleure façon de le rendre configurable.
Utiliser la chaîne d'outils
- une option (-DUSE32bit = true)
Ce n'est pas évolutif, je suppose. Et si vous voulez construire N projets? Vous devez ajouter N options.
- types de build (-DCMAKE_BUILD_TYPE = release32)
Cela peut bien fonctionner. Mais à mon avis, vous mélangez des choses indépendantes. Je suis aussi sûr que vous devez adapter find_package
comportement en définissant un *_ROOT
CMake variables. Ce n'est pas possible de le faire avec CMAKE_BUILD_TYPE
(au moins, encore une fois, de façon évolutive).
- une chaîne d'outils (-DCMAKE_TOOLCHAIN_FILE = 64bit.toolchain)
La meilleure variante. Si vous souhaitez créer deux projets, utilisez simplement la même chaîne d'outils:
cmake -Hproj-1 -B_builds/proj-1 -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
cmake -Hproj-2 -B_builds/proj-2 -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
Si vous voulez construire votre ExternalProject_Add tiers avec une architecture 64 bits - passez simplement la chaîne d'outils à CMAKE_ARGS:
ExternalProject_Add(
...
CMAKE_ARGS ... -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
...
)
Vous voulez vous adapter find_package
- ajoutez simplement toutes les variables CMake au fichier de la chaîne d'outils.
Pour Visual Studio et par https://cmake.org/cmake/help/latest/variable/CMAKE_GENERATOR_PLATFORM.html
Pour les générateurs Visual Studio avec VS 2005 et supérieur, cela spécifie l'architecture cible.
cmake . -DCMAKE_GENERATOR_PLATFORM=x64