ChatGPT解决这个技术问题 Extra ChatGPT

向 CMake 添加命令行选项

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

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

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

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

P
Peter Mortensen

是的,您应该使用 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 覆盖,
P
Peter Mortensen

稍微修正一下:

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

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

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