CMake scripts for painless usage of Tim Davis’ SuiteSparse (CHOLMOD,UMFPACK,AMD,LDL,SPQR,…) and METIS from Visual Studio and the rest of Windows/Linux/OSX IDEs supported by CMake. The project includes precompiled BLAS/LAPACK DLLs for easy use with Visual C++
在使用CMAKE处理前。请注意:
首先将…\suitesparse-master\metis\programs\CMakeLists.txt做修改,即在图5-1中红色框线内的四行语句中,分别在末尾添加../GKlib/getopt.c
。
然后再编译。
如果你实在是闲得慌,可以按照下面方面手动自己安装LAPACK(不推荐)
注意这里不同于一般的windows下vs+cmake的而是需要使用cmake+MinGW配置方式。
在安装LAPACK之前需要先安装MinGW:
MinGW可以自行百度。
MinGW有在线版和离线版安装两种,建议安装离线版。
注意我们这里安装的是64版本。
MinGW分为较早开发的MinGW32和之后为编译64位程序开发的MinGW-w64,MinGW32只能编译32位的程序,而mingw64不仅能编译64位程序,也能编译32位程序,还能进行交叉编译,即在32位主机上编译64位程序,在64位主机上编译32位程序。
传送门
安装好将解压的包放在一个路径下。并且将其bin加入环境变量:
http://netlib.org/lapack/lapack.tgz
需要将其中的
make.inc.example文件重命名为make.inc。
使用Cmake编译:
注意:
选"Specify native compilers",点击next,选择c和fortran编译器在你机器的路径(这里其实就是刚才MinGW/bin下)。例如我的路径为
C:/mingw64/bin/x86_64-w64-mingw32-gfortran.exe
C:/mingw64/bin/x86_64-w64-mingw32-gcc.exe
进一步设置: ‘BUILD_SHARED_LIBS’ 和 ‘CMAKE_GNUtoMS’ 选中,接着在列表中选中’LAPACKE’。
可以看到configuration成功了:
点击generate:
ok成功!
进入该你cmake生成的目标文件夹:
使用管理员身份运行命令行:
进入并运行:mingw32-make
(因为我们之前已经配置好了环境变量了)
如果你失败了
请进行如下操作:
请在你cmake输出文件夹下,编辑:
SRC\CMakeFiles\lapack.dir\link.txt
将第三句 'C:\MinGW\bin\x86_64-w64-mingw32-gfortran.exe -O2 …'变更为
C:\MinGW\bin\x86_64-w64-mingw32-gfortran.exe -O2 -DNDEBUG -O2 -shared -o ..\bin\liblapack.dll -Wl,--allow-multiple-definition -Wl,--out-implib,..\lib\liblapack.dll.a -Wl,--major-image-version,3,--minor-image-version,8 -Wl,--whole-archive CMakeFiles\lapack.dir/objects.a -Wl,--no-whole-archive @CMakeFiles\lapack.dir\linklibs.rsp -Wl,--output-def,lapack.def
然后回到刚才cmake输出文件夹下,运行
mingw32-make -Wl,--allow-multiple-definition
即可。
然后使用mingw32-make.exe test命令检验编译结果。
此时文件夹下的lib文件夹下生成了libblas.a,liblapack.a和libtmglib.a三个文件,至此完成了lapack库和blas库的编译。