向CMake添加命令行选项


111

我正在使用CMake构建大型图书馆,我希望用户能够选择性地启用/禁用构建过程的某些部分。

我如何在我的CMake版本中添加命令行选项,例如,以便用户可以输入类似的内容cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..

显然,OPTION关键字将创建可以从CMake GUI设置的变量,但是我无法从命令行中确定如何执行此操作。


谢谢您的提问,它回答了有关cmake选项目的的问题。所以,我现在看到的是用于GUI
Trueadjustr

Answers:


161

是的,您应该使用option命令。您可以通过以下方式从命令行设置选项:

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

//Command line
cmake -DMyOption=ON MyProjectFolder

注意,-DMyOption必须在路径之前。


5
...并且cmake MyProjectFolder -DMyOption不会打开(或关闭)该选项
mabraham 2013年

将-DMyOption放在MyProjectFolder之前并尝试一下?
updogliu 2014年

11
使用-DMyOption=ON-DMyOption=OFF打开或关闭。
kvanberendonck

我刚刚注意到,因为我正在尝试构建第三方模块,因此在cmake命令行上使用-DNAME = overridingValue可以覆盖CMakeLists.txt中设置为“ set(NAME blahblah)”的项目,
peterk

13

只是一点校正:

如果要传递其他变量,建议指出这些变量的类型:

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

//Command line
cmake -DMyOption:BOOL=ON MyProjectFolder -D...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.