使用autotool的配置,每个功能都可以通过--with-feature=...
/--enable-feature=...
显式启用或通过--without-feature
/--disable-feature
显式禁用。
一些CMake查找包脚本会先计算变量feature_ROOT
来搜索,但这并不常见,也不鼓励这样做。CMake计算几个路径并尝试在那里找到库。如果要添加不在默认路径中的特性,可以添加正确的路径。
如何禁用一个功能,这是安装在系统上,从而被CMake的配置发现?例如,Java默认安装在/usr
下面,CMake可以在不添加CMake路径的情况下找到它;如何禁用Java?它总会被找到的。
我不想手动修改CMakeCache.txt.
总结:我有一个项目,我不想/可以修改,它有一个find_package
和我有包(例如Java)安装,但我不希望CMake使用这个包。我想要一个开关/标志来停用已安装和通常找到的包
我发现,这一点也不难。为了防止我的特性被发现,我传递了
-DFEATURE_FOUND=FALSE
到CMake,然后找不到它,即使安装了
也可以通过
-DCMAKE_DISABLE_FIND_PACKAGE_FEATURE=TRUE