通过命令行在CMakeLists.txt中设置的CMAKE覆盖变量

时间:2019-09-09 19:19:02

标签: cmake

我有一个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")

1 个答案:

答案 0 :(得分:1)

使用命令行不能 覆盖设置正常(非缓存)变量。 >


如果通过命令行传递变量,则它始终是缓存变量。在CMakeLists.txt中设置变量的常规样式时,会同时存在这两种样式。但是,当取消引用变量时,CMake会优先选择普通样式而不是缓存样式。在variables' documentation中查看更多信息。