Configuration 排除CMake'中的特征;s配置
使用autotool的“配置”功能,每个功能都可以通过Configuration 排除CMake'中的特征;s配置,configuration,cmake,autotools,Configuration,Cmake,Autotools,使用autotool的“配置”功能,每个功能都可以通过--使用功能=…/--启用功能=…显式启用,或通过--不使用功能/--禁用功能显式禁用 有些CMake find packages脚本评估变量feature\u ROOT以首先在那里搜索,但它是和。CMake评估多个路径并尝试在其中查找库。要添加不位于默认路径中的特征,可以添加正确的路径 如何禁用安装在系统上并因此由CMake的配置发现的功能?例如,Java安装在下面的默认/usr中,由CMake查找,而不添加CMake的路径;如何禁用Jav
--使用功能=…
/--启用功能=…
显式启用,或通过--不使用功能
/--禁用功能
显式禁用
有些CMake find packages脚本评估变量feature\u ROOT
以首先在那里搜索,但它是和。CMake评估多个路径并尝试在其中查找库。要添加不位于默认路径中的特征,可以添加正确的路径
如何禁用安装在系统上并因此由CMake的配置发现的功能?例如,Java安装在下面的默认/usr
中,由CMake查找,而不添加CMake的路径;如何禁用Java?它总是会被找到的
我不想手动修改cmakcache.txt
总而言之:我有一个我不想/可以修改的项目,它有一个
find_包
,我安装了这个包(例如Java),但我不想让CMake使用这个包。我需要一个开关/标志来停用已安装且通常可以找到的软件包。正如我所发现的,这一点都不难。为了防止我的功能被发现,我通过了
-DFEATURE_FOUND=FALSE
到CMake,然后找不到它,即使在安装时也是如此
或者你可以通过
-DCMAKE_DISABLE_FIND_PACKAGE_FEATURE=TRUE
要完全抑制查找模块。命令有许多子选项。例如,如果您设置了
NO\u DEFAULT\u PATH
,则在标准位置搜索将被禁用<代码>如何禁用Java?发件人:调用者可以设置变量Java\u HOME以明确指定Java安装前缀。
但这是不常见且不受鼓励的
嗯,我不同意这里的开发人员)如果您有更多选项来指定包位置,我看不出有什么不好的。在这种情况下,您可以修补默认的查找*.cmake
模块,并将其放在存储库中。然后将它们添加到CMAKE_MODULE_PATH
并使用。为了澄清:我想从用户的角度禁用功能,例如禁用损坏的Java安装。修改源代码不是一个选项。因此您有一个无法修改的项目,并且有一个命令find\u package(Java)
(并且您不想安装Java)?我认为没有出路,您需要修改源代码。创建您自己的FindJava.cmake
文件并将其添加到cmake\u模块路径中。当调用命令find_package
时,它将加载您的版本。怎么样?:)