在CMake的,有没有一种方法,使内置的查找脚本优先,我们指定自定义目录? 因为尤其是在窗口,模块找到脚本通常不能检测模块,例如Visual Studio的目录。 因此,我通常必须手动设置,这是非常劳累的外部库的路径。 相反,我想这些脚本在自定义目录看,让我们说“依赖”的主要项目文件夹第一,这样我可以直接把这些外部组件文件夹是不是把他们变成了VC文件夹或手动设置更容易在路径。
Answer 1:
设置CMAKE_PREFIX_PATH变量提供准确,这些用途:用于暗示find_*
有关搜索项的定位功能。
虽然这个变量的描述并不注意有关find_package
函数,变量就可以了间接的影响:最的Find<name>.cmake
脚本使用find_library和find_path功能。 请注意,所有find_*
功能,拥有搜索条目的精确算法 ,并与构建路径CMAKE_PREFIX_PATH
之前系统的人进行检查。
此外, CMAKE_PREFIX_PATH
会影响其它一些搜索程序。 例如,如果3D方包提供<name>Config.cmake
脚本,而不是Find<name>.cmake
一个,这个脚本也搜索在使用这个变量。 pkg_check_modules还采用CMAKE_PREFIX_PATH
搜索.pc
文件,描述的包。
CMAKE_PREFIX_PATH
变量可以设置为一个环境(在平台依赖和用途专有的方式),作为参数传递给cmake
电话:
cmake -DCMAKE_PREFIX_PATH=<additional-path> <other-parameters>
或内CMakeLists.txt
文件。 在后一种情况下,最好是附加搜索目录,所以你包的用户可以设置变量太不随您的项目搜索包:
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dependencies")
文章来源: Hinting Find.cmake Files with a custom directory