Jetson嵌入式Linux下CMake find_package()无法找到NemaTode库
问题解答
为什么CMake默认不搜索/usr/local/lib/cmake路径?
核心原因有两点:
1. CMake默认搜索的路径规范
CMake使用find_package()的Config模式时,默认会从CMAKE_PREFIX_PATH包含的系统前缀目录(比如/usr/local、/usr)下的特定子目录搜索包配置文件,而非直接遍历前缀下的所有目录。标准的搜索结构是:
<prefix>/lib/cmake/<PackageName>/<prefix>/share/cmake/<PackageName>/
如果你的NemaTode库配置文件没有放在/usr/local/lib/cmake/NemaTode/这种以包名命名的子目录下,而是直接放在/usr/local/lib/cmake/根目录,那么默认的搜索逻辑不会匹配到这个路径,自然找不到配置文件。
2. 旧版本CMake的路径限制
Ubuntu 18.04默认搭载的CMake版本通常是3.10.x左右,属于较旧的版本。旧版本CMake在默认路径的覆盖范围上不如新版本宽泛,对于非标准放置的包配置文件,不会自动扩展搜索/usr/local/lib/cmake这类目录。
额外验证建议
- 检查NemaTode的配置文件名是否符合规范:应该是
NemaTodeConfig.cmake(或对应小写形式,取决于包的定义) - 确认配置文件的存放路径是否符合CMake包规范,建议将其移动到
/usr/local/lib/cmake/NemaTode/目录下,这样即使不手动设置CMAKE_PREFIX_PATH,CMake也能自动找到
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

