Agregar opciones de línea de comando a CMake

111

Estoy construyendo una gran biblioteca usando CMake, y me gustaría que los usuarios pudieran habilitar / deshabilitar selectivamente ciertas partes de mi proceso de construcción.

¿Cómo puedo agregar opciones de línea de comandos a mi compilación de CMake, por ejemplo, para que los usuarios puedan escribir algo como cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

Aparentemente, la palabra clave OPTION creará variables que se pueden configurar desde la GUI de CMake, pero no puedo entender cómo hacerlo desde la línea de comando.

rcv
fuente
Gracias por su pregunta, ya que respondió a mi pregunta con respecto al propósito de la opción cmake. Entonces, veo que ahora es para GUI
truthadjustr

Respuestas:

161

Sí, deberías usar el optioncomando. Puede configurar opciones desde la línea de comando de esta manera:

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

//Command line
cmake -DMyOption=ON MyProjectFolder

Tenga en cuenta que -DMyOptiondebe venir antes del camino.

beduino
fuente
5
... y cmake MyProjectFolder -DMyOptionno enciende (o apaga) la opción
mabraham
poner -DMyOption antes de MyProjectFolder y probar?
updogliu
11
Use -DMyOption=ONo -DMyOption=OFFpara encender o apagar.
kvanberendonck
Me di cuenta de que, mientras intentaba construir un módulo de terceros, los elementos configurados con "set (NAME blahblah)" en CMakeLists.txt son reemplazables con -DNAME = overridingValue en la línea de comando cmake,
peterk
13

Solo una pequeña corrección:

Si tiene otras variables para aprobar, se recomienda indicar el tipo de estas:

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

//Command line
cmake -DMyOption:BOOL=ON MyProjectFolder -D...
guilloptero
fuente