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.


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.


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...
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.