Hinzufügen von Befehlszeilenoptionen zu CMake

111

Ich erstelle eine große Bibliothek mit CMake und möchte, dass Benutzer bestimmte Teile meines Erstellungsprozesses selektiv aktivieren / deaktivieren können.

Wie kann ich meinem CMake-Build Befehlszeilenoptionen hinzufügen, z. B. damit Benutzer so etwas eingeben können cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

Anscheinend erstellt das Schlüsselwort OPTION Variablen, die über die CMake-GUI festgelegt werden können, aber ich kann über die Befehlszeile nicht herausfinden, wie dies zu tun ist.

rcv
quelle
Vielen Dank für Ihre Frage, die meine Frage zum Zweck der Option cmake beantwortet hat. Also, ich sehe jetzt, es ist für GUI
Truthadjustr vor

Antworten:

161

Ja, Sie sollten den optionBefehl verwenden. Sie können Optionen über die Befehlszeile folgendermaßen festlegen:

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

//Command line
cmake -DMyOption=ON MyProjectFolder

Beachten Sie, dass -DMyOptionvor dem Pfad kommen muss.

Beduin
quelle
5
... und cmake MyProjectFolder -DMyOption
schaltet
-DMyOption vor MyProjectFolder setzen und ausprobieren?
updogliu
11
Verwenden Sie -DMyOption=ONoder -DMyOption=OFFzum Ein- oder Ausschalten.
Kvanberendonck
Ich habe gerade bemerkt, als ich versuchte, ein Modul eines Drittanbieters zu erstellen, dass Elemente, die mit "set (NAME blahblah)" in CMakeLists.txt festgelegt wurden, mit -DNAME = overridingValue in der Befehlszeile cmake überschrieben werden können.
peterk
13

Nur eine kleine Korrektur:

Wenn Sie andere Variablen übergeben müssen, wird empfohlen, deren Typ anzugeben:

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

//Command line
cmake -DMyOption:BOOL=ON MyProjectFolder -D...
Guilloptero
quelle