Cmake 暗示发现<;名称>;。使用自定义目录创建文件

Cmake 暗示发现<;名称>;。使用自定义目录创建文件,cmake,Cmake,在CMake中,是否有一种方法可以使内置的查找脚本对我们指定的自定义目录进行优先级排序?因为特别是在windows中,模块查找脚本通常无法在中检测模块,例如visual studio目录。因此,我通常必须手动设置外部库的路径,这非常累人。相反,我希望这些脚本在自定义目录中查找,让我们先将“dependencies”文件夹放在主项目中,这样我就可以直接将这些外部内容放在该文件夹中,这比将它们放在VC文件夹中或手动设置路径要容易得多。设置变量正好用于以下目的:提示查找*函数关于搜索项的位置 虽然该变

在CMake中,是否有一种方法可以使内置的查找脚本对我们指定的自定义目录进行优先级排序?因为特别是在windows中,模块查找脚本通常无法在中检测模块,例如visual studio目录。因此,我通常必须手动设置外部库的路径,这非常累人。相反,我希望这些脚本在自定义目录中查找,让我们先将“dependencies”文件夹放在主项目中,这样我就可以直接将这些外部内容放在该文件夹中,这比将它们放在VC文件夹中或手动设置路径要容易得多。

设置变量正好用于以下目的:提示
查找*
函数关于搜索项的位置

虽然该变量的描述没有说明
find\u package
函数,但该变量会间接影响它:大多数
find.cmake
脚本使用和函数。请注意,所有
find*
函数都有精确的搜索项算法,使用
CMAKE_PREFIX_PATH
构建的路径在系统路径之前进行检查

此外,
CMAKE_PREFIX_PATH
会影响其他一些搜索过程。例如,如果第三方软件包提供了
Config.cmake
脚本而不是
Find.cmake
脚本,则也会使用此变量搜索此脚本。还使用
CMAKE\u PREFIX\u PATH
搜索描述软件包的
.pc
文件

CMAKE\u PREFIX\u PATH
变量可以设置为环境变量(以平台和使用特定的方式),作为
CMAKE
调用的参数:

cmake -DCMAKE_PREFIX_PATH=<additional-path> <other-parameters>


注意,变量
CMAKE\u PREFIX\u PATH
不会影响搜索
FindXXX.CMAKE
脚本本身。要指定脚本所在的目录,请使用
CMAKE\u MODULE\u PATH
变量。

谢谢,效果很好。奇怪的是,这样一个重要的选项没有被注意到来帮助查找脚本。它是否有任何会“破坏”任何脚本的副作用?除非
CMAKE_PREFIX_PATH
中列出的目录有部分或破坏的安装,或者在标准搜索后缀(lib/、lib64/、include/)下有不相关的文件,否则设置此变量不应损害任何
find
脚本。如果是这样,这就是
find
脚本本身的问题。最糟糕的情况是脚本可能会忽略
CMAKE\u PREFIX\u PATH
中列出的目录。在这种情况下,我们应该检查具体的
find
script。我要补充的是,对于仅搜索
find.cmake
的情况,您应该使用
cmake\u模块路径
。我想补充一点,关于
find.cmake
脚本的更多信息,我建议您阅读cmake手册中的页面。
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dependencies")