CMake禁用库的所有选项
CMake disable all options for a library
我是cmake的新手,我有一个SDL源代码目录,我想在我的项目中使用它。我将整个源目录复制到我的项目中,并编写了
add_subdirectory(SDL2-2.0.3)
到我的CMakeLists.txt文件中。现在的问题是:SDL有很多默认启用的选项:
set_option(VIDEO_COCOA "Use Cocoa video driver" ${APPLE})
set_option(DIRECTX "Use DirectX for Windows audio/video" ${WINDOWS})
...
我不想要所有的,只想要两三个我要使用的模块。我如何一次禁用所有它们,然后只启用我需要的两个/三个?
我试过
option(DIRECTX "Use DirectX for Windows audio/video" OFF)
但我不喜欢在文件中重复所有我不想要的选项,只需将所有选项默认为OFF并启用我需要的选项会更容易。有可能吗?
没有任何命令可以做到这一点。
option
命令只是将具有给定名称和默认值的变量添加到CMakeCache中。与set
命令一样,它不会覆盖缓存中的现有值,即使该值与为该选项指定的默认值不同。
为外部库设置选项的惯用方法实际上是在调用第三方CMake脚本之前手动set
缓存中的所有变量。我建议你这样做。
您尝试执行的操作的问题是,必须在调用add_subdirectory
之前设置选项,但只有在调用之后才能检测该脚本设置了哪些选项。理论上,您可以使用get_cmake_property
命令枚举SDL的CMake脚本设置的所有缓存变量,然后在add_subdirectory
调用后将它们重置为FALSE
。但是,您必须再次运行CMake才能使这些更改变为活动状态。
我强烈建议不要使用这种手段。在将来升级SDL时,很容易意外地弄乱选项,而且必须向用户解释他们必须运行两次CMake才能成功构建,这是不好的。
相关文章:
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过ccmake在cmake中缓存依赖选项
- CMake - 更改共享库链接选项
- 以现代 CMake 方式控制包含的库中的构建选项(测试等)
- OpenSSL with CMake - 未知选项: --sysroot 在构建 openSSL 时
- 为什么cmake还为导入的包添加编译选项
- 错误:必须设置CMake工具才能生成.在工具包选项中配置CMake工具
- CMake:如何清除目标编译选项
- 我可以通过设置工具链文件来替换调用 cmake -G<generator> 选项和调用 vcvarsall.bat吗?
- 在现代CMAKE中设置全球选项
- 如何在CMAKE中使用不同的编译选项进行编译
- cMake中的pthread和-pthread选项有什么区别?
- CMake:有没有办法将选项传递给 g++ 而不是 nvcc
- 制作文件后启用cmake选项/标志
- C++11 cmake O3 选项<没有用于初始化 'std::thread' 的匹配构造函数>
- 在源C++中检查CMake的选项
- CMake 是否add_compile_options在适当时影响链接器选项
- 如何使用CMake为visual studio 2010设置图书管理员选项/忽略:4221
- 如何将 'cmake' 中的 qtconfig 选项更改为 qtconfig4?
- 使用 cmake 传递复合编译器选项