向 CMake 添加命令行选项

Posted

技术标签:

【中文标题】向 CMake 添加命令行选项【英文标题】:Adding command line options to CMake 【发布时间】:2021-12-27 09:53:06 【问题描述】:

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

如何在我的 CMake 构建中添加命令行选项,例如这样用户就可以输入类似cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

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

【问题讨论】:

感谢您的提问,因为它回答了我关于 cmake 选项用途的问题。所以,我现在看到它是用于 GUI 的 【参考方案1】:

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

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

//Command line
cmake -DMyOption=ON MyProjectFolder

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

【讨论】:

... 和 cmake MyProjectFolder -DMyOption 不会打开(或关闭)该选项 把 -DMyOption 放在 MyProjectFolder 之前试试看? 使用-DMyOption=ON-DMyOption=OFF 开启或关闭。 我刚刚注意到,当我试图构建一个第三方模块时,在 CMakeLists.txt 中使用“set(NAME blahblah)”设置的项目可以用 cmake 命令行上的 -DNAME=overridingValue 覆盖, 【参考方案2】:

稍微修正一下:

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

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

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

【讨论】:

以上是关于向 CMake 添加命令行选项的主要内容,如果未能解决你的问题,请参考以下文章

如何使用CMake在链接命令行的末尾添加标志?

使用 cmake 从命令行使用 /MT 标志编译

从命令行在CMake项目上设置MSVC运行时

如何在 MSVC 2019 中的 CMake 管理的 C++ 项目中将命令行启动参数添加到发布目标?

argparse - 命令行选项与参数解析

处理用户输入