编译 Windows 版的 netCDF 4.3.0
来源:互联网 发布:人生必读书籍软件 编辑:程序博客网 时间:2024/05/22 11:49
netCDF 4.3.0 通过 cmake 来提供跨平台的编译支持。
然而,编译中有许多依赖库也需要编译,过程颇为复杂。 本文记录备忘。
主要参考 http://gmtrac.soest.hawaii.edu/projects/gmt/wiki/BuildingNetCDF
步骤基本相同,细节略有差异。
本例的系统是 Win7 x64。 本文中编译均是 32位。
需要编译的软件均以 D:\software 为 ROOT。
源码统一放在 D:\software\src 下。
系统中已经安装了 VS2008
所有控制台操作均在 VS2008/Tools/VS2008命令提示窗口中进行。
步骤如下
1. 下载 HDF 4.2.9 的二进制共享版版, 安装后的目录是
C:\Program Files (x86)\HDF_Group\HDF\4.2.9
2. 下载 HDF5 1.8.10 的二进制共享版,安装后的目录是
C:\Program Files (x86)\HDF_Group\HDF5\1.8.10
3. 编译 cURL 7.24.0 。其它版本可能有问题。
3.1. 将源码解压到 D:\software\src\curl-7.24.0
3.2. 修改 D:\software\src\curl-7.24.0\CMakeLists.txt
--- curl-7.24.0/CMakeLists.txt.orig 2012-02-27 11:44:29.000000000 +0100+++ curl-7.24.0/CMakeLists.txt 2012-02-27 11:44:29.000000000 +0100@@ -148,9 +148,9 @@ mark_as_advanced(ENABLE_IPV6) if(WIN32)- find_library(WSOCK32_LIBRARY wsock32)- find_library(WS2_32_LIBRARY ws2_32)- list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES ${WSOCK32_LIBRARY} ${WS2_32_LIBRARY}) # bufferoverflowu.lib+ # Windows standard libraries are located in C:/Program Files/Microsoft SDKs/[...]+ # They are already included in the default MSVC LIBPATH => no find_library is needed!+ list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES wsock32.lib ws2_32.lib) if(CURL_DISABLE_LDAP) # Remove wldap32.lib from space-separated list string(REPLACE " " ";" _LIST ${CMAKE_C_STANDARD_LIBRARIES})
3.3 运行如下命令
d:cd d:\software\src\curl-7.24.0\mkdir buildcd buildcmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=d:\software -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_ROOT_PATH="C:\Program Files (x86)\HDF_Group\HDF5\1.8.10" -DCMAKE_USE_OPENSSL=OFF ..
这里,-DCMAKE_INSTALL_PREFIX=d:\software 表示未来的安装目录。CMake会优先到CMAKE_INSTALL_PREFIX/lib 和 CMAKE_INSTALL_PREFIX/include 中寻找依赖库,因此对于从源码编译的有依赖关系的软件,均指定相同的CMAKE_INSTALL_PREFIX是有好处的。
-DCMAKE_FIND_ROOT_PATH="C:\Program Files (x86)\HDF_Group\HDF5\1.8.10" 的目的是为了使用hdf5中包含的zlib库。
然后
nmake nmake install
4. 编译 XDR
4.1 从 svn://gmtserver.soest.hawaii.edu/gmt5/sandbox/win32-dev/bsd-xdr 检出源码到 d:\software\src\bsd-xdr
4.2 编辑其中的 cmake/ConfigUser.cmake
修改 CMAKE_INSTALL_PREFIX 的值为 d:/software
4.3
cd bsd-xdrmkdir buildcd buildcmake -G "NMake Makefiles" ..nmakenmake install
d:\software\bin\xdrsizeof_test 工作正常表示编译正确
5. 编译 netcdf 4.3.0
解压 netcdr 4.3.0的源码到 d:\software\src\netcdf-4.3.0\
编辑其中的 cmake/ConfigUser.cmake 设定 HDF, xdr 等的正确路径。本例中
# Where netcdf will be installed:set (CMAKE_INSTALL_PREFIX d:/software)# General root path to include and lib dirs:set (CMAKE_FIND_ROOT_PATH d:/software)# Location of HFD4, HDF5 and zlibset (ENV{HDF4_ROOT} "C:\Program Files (x86)\HDF_Group\HDF\4.2.9")set (ENV{HDF5_ROOT} "C:\Program Files (x86)\HDF_Group\HDF5\1.8.10")set (ENV{ZLIB_ROOT} "$ENV{HDF5_ROOT}")# Root directories of libs that are not in CMAKE_FIND_ROOT_PATH:set (CURL_ROOT d:/software)set (XDR_ROOT d:/software)
然后运行命令
cd netcdf-4.3.0mkdir buildcd buildD:\software\bin>cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=d:\software -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_ROOT_PATH="C:\Program Files (x86)\HDF_Group\HDF5\1.8.10\cmake" ..nmakenmake install
6. 将
C:\Program Files (x86)\HDF_Group\HDF\4.2.9\bin
C:\Program Files (x86)\HDF_Group\HDF5\1.8.10\bin
d:\software\lib
三个目录中的所有文件copy 到d:\software\bin 中。
7. 测试
cd d:\software\bin
ncdump 可以看到命令提示信息。
这个工作的关键是要理解 CMake查找依赖库的方式。建议仔细阅读
http://www.vtk.org/Wiki/CMake:How_To_Find_Libraries
中Using external libraries一节。
- 编译 Windows 版的 netCDF 4.3.0
- netcdf源码在windows上的编译
- NetCDF 库 之 VC6.0 编译版本
- windows netcdf vs 配置
- NetCDF文件的读取
- Netcdf
- netcdf
- GDAL使用插件方式编译HDF4、HDF5以及NetCDF的bug修改
- windows下VS2010中使用netcdf的C++接口实现.nc文件的读写
- GDAL+HDF4+HDF5+netCDF库编译C#
- NC文件的处理【netcdf】
- 编译windows版的openssl
- 如何patch Netcdf的jar包
- python关于netcdf文件的读写
- NetCDF中scale_factor和add_offset的使用
- vs2013+NetCDF二维数据的读取方法
- vs2013+NetCDF三维数据的读取方法
- c++实现netcdf数据的存储与
- javafx.scene.Group的疑问setAutoSizeChildren
- 面向对象的5条基本设计原则
- NOJ [1356] Hey! Where Is My Sweets(╯▔皿▔)╯ 一个数拆分成最多m个数的不重复的方法数
- javafx.application.Application
- alg : 单向链表回环的判断 on drv
- 编译 Windows 版的 netCDF 4.3.0
- Application Execution Modes
- 黑马程序员 7K月薪面试题破解之一 -- 交通灯管理系统
- android app widget,安卓桌面小工具的使用
- 黑马程序员 7K月薪面试题破解之二 -- 银行业务调度系统
- 杭电2031
- Web前端浏览器兼容初探
- 【STL】list基础
- eclipse关联JAVA API文档以及ubuntu中提示的黑色背景修改