CMake 配置中的排除功能



使用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

最新更新