在CMake的配置中排除功能

时间:2014-06-27 20:41:42

标签: configuration cmake autotools

使用自动工具配置可以--with-feature=... / --enable-feature=...明确启用每个功能,或--without-feature / --disable-feature明确禁用。

一些CMake查找包脚本评估变量feature_ROOT以便先搜索,但它是uncommondiscouraged。 CMake评估几条路径并尝试在那里找到库。要添加不在默认路径中的功能,可以添加正确的路径。

如何禁用某项功能,该功能已安装在系统上,因此可通过CMake配置找到?例如,Java安装在/usr下面的默认值中,由CMake找到,而不添加CMake的路径;我该如何禁用Java?它总会被发现。

我不想手动修改CMakeCache.txt。

总结一下:我有一个我不想要/可以修改的项目,它有find_package并且我安装了包(例如Java)但我不想要CMake使用这个包。我想要一个switch / flag来停用已安装且通常找到的包。

1 个答案:

答案 0 :(得分:1)

正如我发现的那样,并不困难。为防止我的功能被发现,我通过了

-DFEATURE_FOUND=FALSE

到CMake,即使安装也找不到它。

或者可以通过

-DCMAKE_DISABLE_FIND_PACKAGE_FEATURE=TRUE

完全禁止查找模块。