图计算库 igraph 在 windows 10 上的编译安装

Posted 车斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图计算库 igraph 在 windows 10 上的编译安装相关的知识,希望对你有一定的参考价值。

图计算库 igraph 在 windows 10 上的编译安装

参考:https://igraph.org/c/doc/igraph-Installation.html#igraph-Installation-general-build-instructions

前提

win10 家庭版 + vs2017 社区免费版 (C/C++)

cmake-3.20.2 (https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-windows-x86_64.msi)

flex_bison (https://github.com/lexxmark/winflexbison/releases/download/v2.5.24/win_flex_bison-2.5.24.zip)

libxml2 (http://xmlsoft.org/)

igraph (https://github.com/igraph/igraph)

编译 libxml2 还是有点麻烦的。我编译好的放在下面的地址:

https://github.com/pepstack/convd.git

注意:libxml2 依赖 iconv,所以 libiconv.zip, libxml2.zip 都需要。并且要 libiconv/include/ 目录下的3个头文件复制到目录:igraph/include/

编译

配置环境变量:

Path=你的原来配置;C:\\DEVPACK\\win_flex_bison-2.5.24

编译 igraph:

  git clone git@github.com:igraph/igraph.git

  cd igraph

  mkdir build

  cd build

  cmake ..

  cmake --build . --config Release

配置

上面编译成功,说明默认地配置可以了。但是,还需要配置:

  cmd

  cmake-gui

配置项如下:

 重要:由于依赖 LIBXML2,而LIBXML2并没有包含在代码库里,需要使用外部的代码。必须配置下面2个变量:

其中路径检验:

%LIBXML2_INCLUDE_DIR%\\libxml\\parser.h

LIBXML2_LIBRARY 指向 libxml2.lib 文件而不是目录。

然后按 configure 按钮,无错误后编译即可:

cmake --build . --config Release

按上面方法编译出来的是32位的静态库。为了编译64位的,上面过程重新来做一遍:

cd igraph

mkdir build64

cd build64

cmake -G"Visual Studio 15 2017 Win64" ..

然后打开cmd, 输入 cmake-gui,和上面的配置相同(重点是 ),如下图。

然后按 configure 按钮,无错误后编译即可:

cmake --build . --config Debug

cmake --build . --config Release

示例

下面开发一个VC程序做下测试。用 vs2017 新建一个VC++控制台空项目。然后手动加入一个文件:main.c,全部代码如下:

/**
 * main.c
 *
 * My first igraph test app
 */
#include <stdio.h>
#include <igraph.h>

int main(int argc, char *argv[])
{
    igraph_t graph;
    igraph_vector_t edges;
    igraph_real_t data[] = {0,1,0,2,0,5,1,2,1,4,2,4,1,3,3,5};
    igraph_vector_view(&edges, data, sizeof(data)/sizeof(double));

    igraph_empty(&graph, 6, IGRAPH_UNDIRECTED);
    igraph_add_edges(&graph, &edges, 0);

    igraph_add_vertices(&graph, 2, 0);
    igraph_add_edge(&graph, 6,4);
    igraph_add_edge(&graph, 6,5);
    igraph_add_edge(&graph, 7,5);
    igraph_add_edge(&graph, 7,3);

    printf("vertices: %d, edges: %d\\n", (int)igraph_vcount(&graph), (int)igraph_ecount(&graph));

    igraph_destroy(&graph);

    return 0;
}

项目64位Debug属性配置(MyWorkPath 由实际目录代替):

VC++目录->包含目录:MyWorkPath\\igraph\\build64\\include;MyWorkPath\\igraph\\include;$(IncludePath)

链接器->常规->附加库目录:MyWorkPath\\igraph\\build64\\src\\Debug;%(AdditionalLibraryDirectories)

链接器->输入->附加依赖项:igraph.lib;%(AdditionalDependencies)

Release仿此配置。编译运行。成功!

以上过程太繁琐,所以我将已经编译好了的包(32位和64位)放在:

https://github.com/pepstack/win32-libs

示例代码在:

https://github.com/pepstack/igraph-samples

git clone 之后,将 win32-libs 目录放到 igraph-samples 目录下面(并将win32-libs目录里面的zip解压),然后使用vs2017打开:

igraph-samples/samples/hello_ig/hello_ig.sln

编译即可!

以上是关于图计算库 igraph 在 windows 10 上的编译安装的主要内容,如果未能解决你的问题,请参考以下文章

图计算库 igraph 在 windows 10 上的编译安装

使用Python-iGraph绘制好友关系图

将 arma::mat 邻接矩阵转换为 C 中的 igraph 图 (Rcpp)

用于有向图的 Python igraph 密度函数

在 igraph 中创建新度量

网络-R语言进行网络分析的基础包 igraph