目录
1 配置
1.1 Release版
1.2 Debug版(带asan)
2 编译
3 安装
平台:中标麒麟
gcc:4.9.3
前文已经通过cmake编译了PROJ库,并安装在/opt/PROJ路径下,下面介绍CMake源码编译安装gdal3.5.3
1 配置
配置这一步决定了编译的版本是debug 版还是release版。假如编译的是debug版,你还可以决定是否关联asan以监视内存的泄露情况。这里我们分两种情况介绍release与debug(带asan)
1.1 Release版
cmake -B build -DCMAKE_PREFIX_PATH="/opt/PROJ" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/opt/gdal"gdal依赖于PROJ,具体说来,依赖PROJ的头文件和库文件。所以你在编译gdal时,要告诉gdalPROJ的头文件和库文件的位置。cmake提供了便利的XXXConfig.cmake文件,里面索引了XXX模块的库路径和头文件路径。如果你使用cmake编译PROJ和gdal,你只需要在配置阶段告知cmake,被依赖模块,在这里也就是PROJ的安装路径即可。cmake自己有一套规则去寻找安装路径下的XXXConfig.cmake文件。
在这里,PROJ的.cmake文件如下:
所以在配置时,通过-DCMAKE_PREFIX_PATH="/opt/PROJ"选项指定PROJ安装路径即可。
1.2 Debug版(带asan)
cmake -B build -DCMAKE_PREFIX_PATH="/opt/PROJ" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="/opt/gdal" -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DCMAKE_C_FLAGS="-fsanitize=address -fno-omit-frame-pointer" -DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=address"这里,因为我仅仅需要gdal作为一个依赖库,所以只需要把asan加入到proj的共享库里,所以这里使用了-DBUILD_SHARED_LIBS=ON和-DCMAKE_SHARED_LINKER_FLAGS="...."选项。
后面的操作对于release和debug都是一样的。
2 编译
这一步利用上一步生成的makefile来执行make
cmake --build build3 安装
sudo cmake --build build --target install