下载源码
proj 官网 https://proj.org/
CSDN下载 https://download.csdn.net/download/sinat_33513254/15567529
前期准备
Cmake
我这里使用的是 cmake 绿色版 cmake-3.8.2-win64-x64.zip,解压即用非常方便。
cmake官网 https://cmake.org/
cmake 官网下载非常慢且下载到一半经常出现错误。我这里分享一下我的网盘:
链接: https://pan.baidu.com/s/11e4rwrbT_X9WnrvP2DNpeA 提取码: hq3c
解压源码
解压源码 proj-4.9.3.tar.gz 到 E 盘,并在源码根目录创建 build (放置 cmake 配置信息和生成的 VS 项目工程)和 PROJ (放置最终编译结果)文件夹。
至目前为止,我的 E:\osg 目录为为以下样式:
编译
Cmake 配置
首先尽量以管理员权限打开 E:\osg\cmake-3.8.2-win64-x64\bin\cmake-gui.exe 文件,以防止无权限带来的其他问题。
- Where is the source code :填入 proj 源码根目录,一般此目录下都有一个 CMakeLists.txt 文件用来管理构建工程,此文件也是 Cmake 构建工程的必要文件。
- Where to build the binaries :一般会在源码根目录下手动创建一个 build 文件夹,用以存放 cmake 构建生成出来的解决方案或者项目。用此解决方案或项目来生成最终结果(比如动态库)。拿我们最终要用 VS2013 来生成动态库库来说,build 文件夹下经过 cmake 一系列操作,会生成出来 proj 的 VS2013 的解决方案,用以最终生成出 proj 的动态或静态库。
- Grouped:勾选后会将 Cmake 配置分组。更直观和方便的配置工程。
- Advanced:勾选后会显示出来更多的可配置的 Cmake 选项。有时需要配置更多隐藏项的时候需要开启。
- CMAKE_CONFIGURATION_TYPES:顾名思义,是配置最终生成解决方案的配置类型。一般 Windows 下我们只需要 Debug 和 Release 即可。
- CMAKE_INSTALL_PREFIX:存放最终生成结果安装的地方。不明白的看到最后即可理解。
- Configure按钮:应用自定义配置。这些配置会保存在 build 文件夹下,下次再次启动 Cmake 的时候,只要 “Where to build the binaries” 的配置还在 build 文件夹,即可使用以前设置过的配置。如果想清理这些配置重新来配,点击 Cmake 左上角 File->Delete Cache 选项或者直接删除 build 内的所有内容,当然创建一个其他名字的新文件夹填入 “Where to build the binaries”也可以。
- Generate按钮:生成解决方案或工程项目(生成的项目或解决方案在 “Where to build the binaries” 设置的目录下)。
- Open Project按钮:顾名思义,打开生成的解决方案。比如我这里,点击之后就直接 VS21013 打开 Cmake 配置生成的有关 proj 的解决方案。
- 往后的博客有关 Cmake 重复的解释不会再有,遇到新的配置项,会再新的博客中再次说明,已讲过的不再赘述。
首先,我们打开 Cmake 软件后,先填入 “Where is the source code” 和 “Where to build the binaries”,当然也可以直接将 CMakeLists.txt 拖入 Cmake 中,或者点击右边的按钮来选择目录,为了看到更清晰简洁的配置选项,我们把 Grouped 勾选上:
点击 Configure 按钮,在弹出窗口上选择生成为 VS2013 X64 的解决方案,然后再点 Finish 按钮:
把所有配置项都展开,可以看到这么多的选项:
我们只关注以下两项,其他以后慢慢来讲。以下,标箭头的是我改过的地方(注意 BUILD_LIBPROJ_SHARED 选中的话,是编译动态库,反之编译的是静态库。我这里编译的是静态库):
再次点击Configure 按钮,用以应用以上修改的配置。然后点击 Generate 按钮生产 VS2013 项目,最后再点击 Open Project 按钮直接打开生成的 VS2013 X64 解决方案。
至此,Cmake 的详细操作和配置已说完,以后不会再这么详细的赘述 Cmake 配置过程了,望不会用 Cmake 的同学多多百度吧!
VS 配置
解决方案打开后,可直接右键 INSTALL 项目进行编译和安装(一般在 Cmake 构建 VS 解决方案来编译开源库的时候,基本都是这样式的解决方案。根据项目名称或者解决方案的项目依赖可以看出,编译 ALL_BUILD 项目基本既可以编译到其他所有的项目。另外,INSTALL 项目可以将编译出来的结果安装到 CMAKE_INSTALL_PREFIX 配置的目录下):
当然你也可以选择批生成。选择 INSTALL 项目,再点击生成按钮:
最终我这里编译的结果如下图(只有静态库,所以没 dll 文件):