如何用CMake自动化编译PDAL依赖SQLite3的可执行文件
Windows下CMake+CPM自动化编译SQLite3供PDAL使用方案
核心实现逻辑
通过CPM拉取SQLite3源码,传递CMake编译参数指定安装目录,让SQLite3在PDAL编译前完成编译并安装到指定路径,再将该路径加入CMAKE_PREFIX_PATH供PDAL识别。
具体步骤
1. 配置CPM引入并编译SQLite3
在管理依赖的CMake脚本(或PDAL根目录的CMakeLists.txt)中,添加如下代码:
# 引入CPM模块(若未引入) include(CPM.cmake) # 下载、编译并安装SQLite3到指定目录 CPMAddPackage( NAME SQLite3 VERSION 3.44.0 # 替换为PDAL要求的对应版本 GIT_REPOSITORY https://github.com/sqlite/sqlite.git GIT_TAG version-3.44.0 # 对应版本的Git标签 OPTIONS "SQLITE_ENABLE_COLUMN_METADATA ON" # 开启PDAL所需的SQLite特性 "CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/third_party/sqlite3_install" "BUILD_SHARED_LIBS OFF" # 按需选择静态/动态库,PDAL通常支持两种 ) # 将SQLite3的安装目录加入搜索路径,确保PDAL能找到 list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/third_party/sqlite3_install)
2. 强制依赖顺序
如果PDAL是通过add_subdirectory引入的子项目,需显式指定依赖关系,确保SQLite3先编译完成:
add_subdirectory(pdal) add_dependencies(pdal SQLite3)
3. Windows编译细节处理
- 使用Visual Studio作为CMake生成器,避免MinGW的兼容性问题
- 若选择动态库(
BUILD_SHARED_LIBS ON),需将${CMAKE_CURRENT_SOURCE_DIR}/third_party/sqlite3_install/bin加入系统PATH,或统一设置CMAKE_RUNTIME_OUTPUT_DIRECTORY让PDAL能找到DLL - 若编译报错,检查SQLite3的CMake选项是否匹配PDAL的依赖要求,比如是否需要开启其他SQLite扩展
验证方法
CMake配置阶段会输出Found SQLite3: ...的日志,说明已成功识别自动化编译的依赖;编译完成后,可在third_party/sqlite3_install目录下找到头文件、库文件(及DLL,若选动态库)。
内容的提问来源于stack exchange,提问作者JP Cordova
相关产品推荐
相关产品推荐

