使用自动工具配置可以--with-feature=...
/ --enable-feature=...
明确启用每个功能,或--without-feature
/ --disable-feature
明确禁用。
一些CMake查找包脚本评估变量feature_ROOT
以便先搜索,但它是uncommon和discouraged。 CMake评估几条路径并尝试在那里找到库。要添加不在默认路径中的功能,可以添加正确的路径。
如何禁用某项功能,该功能已安装在系统上,因此可通过CMake配置找到?例如,Java安装在/usr
下面的默认值中,由CMake找到,而不添加CMake的路径;我该如何禁用Java?它总会被发现。
我不想手动修改CMakeCache.txt。
总结一下:我有一个我不想要/可以修改的项目,它有find_package
并且我安装了包(例如Java)但我不想要CMake使用这个包。我想要一个switch / flag来停用已安装且通常找到的包。
答案 0 :(得分:1)
正如我发现的那样,并不困难。为防止我的功能被发现,我通过了
-DFEATURE_FOUND=FALSE
到CMake,即使安装也找不到它。
或者可以通过
-DCMAKE_DISABLE_FIND_PACKAGE_FEATURE=TRUE
完全禁止查找模块。