我有一个CMakeLists.txt,其中包含以下内容,我无法修改:
set(BUILD_SHARED_LIBS ON)
我想使用命令行覆盖此变量。我尝试过:
cmake -UBUILD_SHARED_LIBS -DBUILD_SHARED_LIBS=OFF ..
但是没有效果。有什么办法告诉cmake使用命令行中的值而不是该值?
注意:我知道使用如下所示的缓存可以解决问题,但是由于我无法编辑文件,因此遗憾的是这不是一种选择:
set(BUILD_SHARED_LIBS ON CACHE BOOL "library build mode")
答案 0 :(得分:1)
使用命令行不能 覆盖设置正常(非缓存)变量。 >
如果通过命令行传递变量,则它始终是缓存变量。在CMakeLists.txt
中设置变量的常规样式时,会同时存在这两种样式。但是,当取消引用变量时,CMake会优先选择普通样式而不是缓存样式。在variables' documentation中查看更多信息。