Ajout d'options de ligne de commande à CMake

111

Je construis une grande bibliothèque à l'aide de CMake et j'aimerais que les utilisateurs puissent activer / désactiver de manière sélective certaines parties de mon processus de construction.

Comment puis-je ajouter des options de ligne de commande à ma version CMake, par exemple pour que les utilisateurs puissent taper quelque chose comme cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

Apparemment, le mot clé OPTION créera des variables qui peuvent être définies à partir de l'interface graphique CMake, mais je ne peux pas comprendre comment faire cela à partir de la ligne de commande.

rcv
la source
Merci pour votre question car elle a répondu à ma question concernant le but de l'option cmake. Donc, je vois maintenant que c'est pour GUI
truthadjustr

Réponses:

161

Ouais, vous devriez utiliser la optioncommande. Vous pouvez définir les options à partir de la ligne de commande de cette façon:

//CMakeLists.txt
option(MyOption "MyOption" OFF)

//Command line
cmake -DMyOption=ON MyProjectFolder

Notez que -DMyOptiondoit venir avant le chemin.

bédouin
la source
5
... et cmake MyProjectFolder -DMyOptionn'active pas (ou ne désactive pas) l'option
mabraham
mettre -DMyOption avant MyProjectFolder et faire un essai?
updogliu
11
Utilisez -DMyOption=ONou -DMyOption=OFFpour activer ou désactiver.
kvanberendonck
Je viens de remarquer que j'essayais de créer un module tiers que les éléments définis avec "set (NAME blahblah)" dans CMakeLists.txt sont remplaçables avec -DNAME = overridingValue sur la ligne de commande cmake,
peterk
13

Juste une petite correction:

Si vous avez d'autres variables à transmettre, il est recommandé d'indiquer le type de celles-ci:

//CMakeLists.txt
option(MyOption "MyOption" OFF)

//Command line
cmake -DMyOption:BOOL=ON MyProjectFolder -D...
guilloptère
la source