Adicionando opções de linha de comando ao CMake

111

Estou construindo uma grande biblioteca usando o CMake e gostaria que os usuários pudessem habilitar / desabilitar seletivamente certas partes do meu processo de compilação.

Como posso adicionar opções de linha de comando à minha construção CMake, por exemplo, para que os usuários possam digitar algo como cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

Aparentemente, a palavra-chave OPTION criará variáveis ​​que podem ser definidas na GUI do CMake, mas não consigo descobrir como fazer isso na linha de comando.

rcv
fonte
Obrigado pela sua pergunta, uma vez que respondeu à minha pergunta com relação ao propósito da opção cmake. Então, vejo que agora é para GUI
truthadjustr

Respostas:

161

Sim, você deve usar o optioncomando. Você pode definir opções na linha de comando desta maneira:

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

//Command line
cmake -DMyOption=ON MyProjectFolder

Observe que -DMyOptiondeve vir antes do caminho.

beduíno
fonte
5
... e cmake MyProjectFolder -DMyOptionnão liga (ou desliga) a opção
mabraham
coloque -DMyOption antes de MyProjectFolder e tente?
updogliu
11
Use -DMyOption=ONou -DMyOption=OFFpara ligar ou desligar.
kvanberendonck 01 de
Acabei de notar, enquanto estava tentando construir um módulo de terceiros, que os itens definidos com "set (NAME blahblah)" em CMakeLists.txt são substituíveis por -DNAME = overridingValue na linha de comando cmake,
peterk
13

Apenas uma pequena correção:

Se você tem outras variáveis ​​para passar, é recomendável indicar o tipo delas:

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

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