lapack 在window下编译

来源:互联网 发布:天猫数据平台 编辑:程序博客网 时间:2024/05/10 06:35

lapack 在window下编译

今天进行了Lapack3.8.0在windows下编译
1. 首先使用CMake进行vs2015下的工程生成,碰到了一个变量没有设置的问题:

string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER)if(${CMAKE_BUILD_TYPE_UPPER} STREQUAL "COVERAGE")message(STATUS "Adding coverage")find_package(codecov)endif()

这个CMAKE_BUILD_TYPE根本就没有设置,于是加入如下代码:

if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)endif()

勾选了“BUILD_SHARED_LIBS”、“BUILD_COMPLEX”、“BUILD_COMPLEX16”、“BUILD_DOUBLE”、“BUILD_SINGLE”

这样CMake成功!

blas编译也很顺利,但是不会输出lib库,dll也没有输出接口(使用dependency查看),lapack由于blas没有lib库,链接不会成功。
2. 于是使用python做了def文件的生成。也就是在存放源文件的文件夹下读取文件名,后缀是.f的加入到def文件中。

但是LAPACK出现了链接错误,发现原来XBLAS的选项不选的情况下,很多LAPACK的源文件是不编译的,在python中添加了USE_XBLAS的选项设置,搜索lapack工程下的CMakefile.txt下USE_XBLAS相关源文件名,把这些放入排除的文件名字符串中,并在生成def文件的时候排除它们。
3. 由于点开某些fortran源代码文件的属性,只要点到command line,编译就会出现错误:

ifort: error #10142: directory ‘Debug\’ does not exist

发现主要多了一个 /Fa”Debug/”选项

主要是在“Out Files”中的“Assembler Name”中有一个“Debug/”,灰色的,其上面的一个选项是“Assember Output”,如果为“No Listing”则下面的不能选了,于是先选一下其他的,然后删除“Assembler Name”中的内容,再选成“No Listing”

在工程中做以上设置就可以了!
/Fa选项

原创粉丝点击