Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 排除CMake'中的特征;s配置_Configuration_Cmake_Autotools - Fatal编程技术网

Configuration 排除CMake'中的特征;s配置

Configuration 排除CMake'中的特征;s配置,configuration,cmake,autotools,Configuration,Cmake,Autotools,使用autotool的“配置”功能,每个功能都可以通过--使用功能=…/--启用功能=…显式启用,或通过--不使用功能/--禁用功能显式禁用 有些CMake find packages脚本评估变量feature\u ROOT以首先在那里搜索,但它是和。CMake评估多个路径并尝试在其中查找库。要添加不位于默认路径中的特征,可以添加正确的路径 如何禁用安装在系统上并因此由CMake的配置发现的功能?例如,Java安装在下面的默认/usr中,由CMake查找,而不添加CMake的路径;如何禁用Jav

使用autotool的“配置”功能,每个功能都可以通过
--使用功能=…
/
--启用功能=…
显式启用,或通过
--不使用功能
/
--禁用功能
显式禁用

有些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
时,它将加载您的版本。怎么样?:)