Windows下使用CMake编译SuiteSparse成VS工程

一、CMake安装

https://CMake.org/download/ 这里可以下载到对应不同平台的安装包,这里分为源码包以及二进制可执行文件两类。然后根据需要进行下载安装就好了。

img


如果只安装 CMake-Gui 的版本,选择 cmake-3.20.0-rc2-windows-x86_64 这个版本。 详细安装可参考:Qt:在Windows 10安装CMake项目构建工具


二、CMake生成HelloWorld的VS工程

(一)新建个目录 HelloWorld,创建 main.cpp,其内容为:

#include <iostream>
using namespace std;

int main() {
    cout << "hello world" << endl;
}

(二)再创建 CMakeLists.txt 文件,其内容为:

cmake_minimum_required(VERSION 3.20.0)
project(HelloWorld)
add_executable(HelloWorld main.cpp)

(三)再运行 cmake-gui 软件,设置源目录和 build 目录后,点击左下角的 Configure,选择 VS 版本,再一次点击 Configure 和 Generate,此时 sln 项目和 VS 工程生成完毕。如下图所示:

CMake_HelloWorld_A.png


三、CMake编译SuiteSparse

这里选择编译suitesparse metis for windows 1.4.0作为学习,库源码下载链接为:https://github.com/jlblancoc/suitesparse-metis-for-windows/releases

下载安装好后,运行 cmake-gui 软件,设置源目录和 build 目录后,点击左下角的 Configure,报错如下图所示:

CMake_SuiteSparse_A.png


根据报错信息可得出,LAPACK_DIR 未找到,需要指定 LAPACK 库的存放位置,如果 LAPACK 库还未编译好,则还需要找到 LAPACK 源码库先 CMake 编译好再指定位置。

幸好的是 SuiteSparse 的开发者早已帮我们编译好了 LAPACK,在 Git 网页上的 Readme 文档中给出了上述错误的解决办法,就是:

将 CMake 变量设置 LAPACK_DIR 为suitesparse-metis-for-windows-master/lapack_windows/x64/(或x32对于32位版本)。

我这里是要 32 位的版本,所以我在 CMakeLists.txt 文件中添加了一行(这里用的相对路径):

set(LAPACK_DIR lapack_windows/x32/)

再次点击 Configure 则不再报错,再点击 Generate 生成 sln 工程等文件。


编译运行生成 SuiteSparse 的 include 和 lib

在 build 目录下使用 VS2019 打开 SuiteSparseProject.sln,先选中 INSTALL 项目,右键选中生成,生成成功后再选中 ALL_BUILD 项目,右键选中重新编译,即可生成 include 和 lib。大功告成,如下图所示:

CMake_SuiteSparse_B.png


参考:

Win10 + VS2019 编译安装 SuiteSparse


原文地址:https://www.cnblogs.com/linuxAndMcu/p/14456943.html