CMake自定义库目录配置异常:无法定位freetype-config.cmake
CMAKE_LIBRARY_PATH 和 CMAKE_INCLUDE_PATH 仅用于指导CMake的find_library()和find_path()命令查找库文件与头文件,不负责定位CMake配置文件(如freetype-config.cmake)。CMake通过find_package()查找包配置文件时,遵循独立的搜索逻辑:默认会在系统标准路径,以及CMAKE_PREFIX_PATH指定的前缀目录下的lib/cmake、share/cmake等子目录中搜索。你仅设置前两个变量,CMake自然找不到freetype-config.cmake的位置。
有两种直接有效的方式让CMake识别到自定义路径下的Freetype配置文件:
方式一:直接指定Freetype的配置文件目录
在执行cmake命令时,通过-DFreetype_DIR参数明确指定freetype-config.cmake所在的目录:
cmake -DFreetype_DIR=/home/ubuntu/libs/lib/cmake <其他参数> <freetype-gl源码路径>
CMake的find_package(Freetype)会优先使用Freetype_DIR指向的目录寻找配置文件,这是最直接的定位方式。
方式二:设置CMAKE_PREFIX_PATH
将你的自定义库根目录添加到CMAKE_PREFIX_PATH,CMake会自动遍历该目录下的lib/cmake、share/cmake等子目录查找包配置文件:
cmake -DCMAKE_PREFIX_PATH=/home/ubuntu/libs <其他参数> <freetype-gl源码路径>
这种方式更通用,如果你的自定义目录下还有其他依赖库,CMake也能自动找到它们的配置文件。
额外提示
如果你的CMake版本较旧(低于3.12),确保freetype-config.cmake的文件名是CMake能识别的标准名称(部分旧版本对文件名大小写敏感,通常应为FreetypeConfig.cmake或freetype-config.cmake)。
内容的提问来源于stack exchange,提问作者Vahagn

