想在Windows 7下编译 HDF4。
编译环境:
CMake 2.8.12.2
Visual Studio 2010
Intel Visual Fortran XE 2013
在 Intel Visual Fortan 命令行工具中运行 VS2010的命令行脚本。然后运行:
ctest -S HDF4WindowsCMake.cmake,hdf-4.2.10 -C Debug -VV -O hdf4.log
当 ctest 执行 Fortran 编译器测试时,遇到错误而终止运行。错误信息为:
LINK : fatal error LNK1181: 无法打开输入文件“user32.lib”
但是查看环境变量,在 LIB 中包含了
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib.
而且打开 VS2010 的IDE,可以顺利编译Fortran 程序。
从以上信息看,难以解释上述链接错误。
即使在一个新的Win7系统下,安装完 VS2010+IVF2013后,进行测试,错误依旧。
经过多方查找,发现,在
C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\Platform\Windows-Intel-Fortran.cmake
末尾添加以下几行可以解决问题:
if(MSVC_C_ARCHITECTURE_ID MATCHES 64 OR MSVC_CXX_ARCHITECTURE_ID MATCHES 64)
set(CMAKE_CL_64 1)
else()
set(CMAKE_CL_64 0)
endif()
if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64)
set(CMAKE_CL_64 1)
endif()
if(CMAKE_CL_64)
LINK_DIRECTORIES("C:/Program\ Files\ (x86)/Microsoft\ SDKs/Windows/v7.0A/Lib/x64/")
else()
LINK_DIRECTORIES("C:/Program\ Files\ (x86)/Microsoft\ SDKs/Windows/v7.0A/Lib/")
endif()
似乎这是 cmake 的Bug.