如何在C++的CMakeLists中链接PROJ库?安装libproj-dev后仍报错
解决CMake无法找到PROJ库配置文件的问题
你遇到的问题是因为通过apt-get install libproj-dev安装的PROJ,其CMake配置文件未被CMake默认搜索路径识别,以下是几种可靠的解决方式:
方法一:使用pkg-config查找PROJ(推荐)
Debian/Ubuntu系统下通过apt安装的库通常会提供.pc配置文件,用pkg-config可以更稳定地定位PROJ:
修改你的CMakeLists.txt为:
cmake_minimum_required(VERSION 3.28) project(transform_crs) set(CMAKE_CXX_STANDARD 17) # 引入pkg-config模块 find_package(PkgConfig REQUIRED) # 通过pkg-config查找PROJ库 pkg_check_modules(PROJ REQUIRED IMPORTED_TARGET proj) add_executable(transform_crs main.cpp) # 链接PROJ库 target_link_libraries(transform_crs PRIVATE PkgConfig::PROJ)
方法二:手动指定PROJ配置文件路径
先通过命令找到PROJ的CMake配置文件位置:
sudo find / -name "PROJConfig.cmake" -o -name "proj-config.cmake"
假设输出路径为/usr/lib/x86_64-linux-gnu/cmake/proj/,你可以在CMakeLists开头添加路径指定:
set(PROJ_DIR "/usr/lib/x86_64-linux-gnu/cmake/proj/") find_package(PROJ REQUIRED CONFIG)
或者在执行cmake时通过参数传递路径:
cmake .. -DPROJ_DIR=/usr/lib/x86_64-linux-gnu/cmake/proj/
方法三:手动查找头文件和库(兼容旧版本PROJ)
如果你的PROJ版本较低(低于6.x),不支持CONFIG模式的find_package,可以直接手动定位头文件和库:
修改CMakeLists.txt为:
cmake_minimum_required(VERSION 3.28) project(transform_crs) set(CMAKE_CXX_STANDARD 17) # 查找PROJ头文件和库文件 find_path(PROJ_INCLUDE_DIR NAMES proj.h) find_library(PROJ_LIBRARY NAMES proj) add_executable(transform_crs main.cpp) # 添加头文件路径并链接库 target_include_directories(transform_crs PRIVATE ${PROJ_INCLUDE_DIR}) target_link_libraries(transform_crs PRIVATE ${PROJ_LIBRARY})
内容的提问来源于stack exchange,提问作者Happy_little_hamster
相关产品推荐
相关产品推荐

