将命令行选项添加到CMake

128

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

我该如何向我的CMake构建添加命令行选项,例如使用户可以键入类似于cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..的内容?

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


谢谢您的问题,它回答了我的问题,关于cmake选项的目的。所以,我现在明白它是用于GUI。 - daparic
2个回答

181

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

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

//Command line
cmake -DMyOption=ON MyProjectFolder

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


5
cmake MyProjectFolder -DMyOption 命令不能开启(或关闭)该选项。 - mabraham
把-DMyOption放在MyProjectFolder之前,试一下? - updogliu
15
使用-DMyOption=ON-DMyOption=OFF 来打开或关闭选项。 - kvanbere
我刚刚注意到,在尝试构建第三方模块时,CMakeLists.txt 中使用 "set(NAME blahblah)" 设置的项目可以通过在 cmake 命令行上使用 -DNAME=overridingValue 进行覆盖。 - peterk

17

只需要稍作更正:

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

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

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

1
@Peter Mortensen -D... 必须放在 MyProjectFolder 后面吗?如果是这样,为什么? - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接