Windows

在 Windows 上构建

(Graphviz 版本 ≥ 12.2.0)

CMake 现在是 Windows 上唯一支持的构建系统。有关详细信息,请参阅 DEVELOPERS.md.gitlab-ci.yml

(Graphviz 版本 ≥ 2.41 和 ≤ 12.1.2)

首先,在存储库的根目录中,执行 git submodule update --init。这将下载所有子模块,这些子模块主要是 Windows 构建的依赖项。接下来,将 windows\dependencies\graphviz-build-utilities 目录添加到您的 PATH(并在执行 msbuild 后重新启动 Visual Studio 或您执行的提示符)。此文件夹包含 Bison、Flex 等工具,其版本经过测试。如果一切顺利,依赖项现在已设置,您可以构建 Graphviz。

(Graphviz 版本 ≥ 2.30)

目前在 Windows 上使用 Visual Studio 的构建过程相当简单,**假设所有必需的文件都可用,并且已放置在正确的位置**。构建假设您已安装 GTK 2.0 或更高版本、Qtltdl 的二进制版本,以及 GTSann 的源代码版本。可在 Graphviz gitlab 存储库 中找到更多说明。

整个过程都可以在很大程度上简化。特别是,第三方软件不应该存储在两个地方,并且发布中包含的 Graphviz 文件应该来自源代码包,而不是单独存储。此外,GTS 和 ANN 构建应该与 Graphviz 构建分离。作为第三方库,这些应该只在源代码更新时构建。

(Graphviz 版本 ≥ 2.22)

我们现在构建 Visual Studio 和 MinGW 版本的 Graphviz。此外,源代码包附带 Visual Studio 的项目文件,因此从源代码构建在任何一种情况下都应该相当简单。

  • 第一步是添加第三方库。它们列在 这里。这可以通过安装 GTK 2.0 或更高版本的 Windows 二进制版本来轻松完成。
  • 接下来,下载并解压缩 Graphviz 源代码包,并将稳定版本或开发源代码包复制过来。

假设 $ROOT 是您存储 Graphviz 源代码的根目录(文件夹)。

使用 Visual Studio 构建

  1. 将文件 $ROOT/windows/config.h 复制到 $ROOT 中。
  2. 将文件夹 $ROOT/windows/FEATURE 复制到 $ROOT 中。
  3. 启动 Visual Studio 并读取 $ROOT/graphviz.sln。所有 Graphviz 部件都有项目文件。
  4. 修改各种设置以查找包含文件和库目录,以查找第三方软件。
  5. 修改设置以指定您希望软件安装的位置。
  6. 构建 Graphviz。

使用 MinGW 构建

  1. 安装 MinGW 和 Msys。这提供了类似于 mini GNU 的编译环境

  2. 根据您的机器设置环境变量,为以下前六个变量赋值

    export INSTALLROOT           # Root install directory
    export GTKDIR                # Root of GTK tree
    export FONTCONFIGINCLUDEDIR  # Path of fontconfig include dir
    export FONTCONFIGLIBDIR      # Path of fontconfig lib dir
    export FREETYPEINCLUDEDIR    # Path of freetype2 include dir
    export FREETYPELIBDIR        # Path of freetype2 lib dir
    
    export CFLAGS="-DGVDLL=1"
    export CPPFLAGS="-I$GTKDIR/include -I$GTKDIR/include/freetype2 "
    export LDFLAGS="-L$GTKDIR/lib -no-undefined"
    export FONTCONFIG_CFLAGS=-I$GTKDIR/include/
    export FONTCONFIG_LIBS="-L$FONTCONFIGLIBDIR -lfontconfig"
    export FREETYPE2_CFLAGS=-I$FREETYPEINCLUDEDIR
    export FREETYPE2_LIBS=-L$FREETYPELIBDIR
    export PKG_CONFIG=$GTKDIR/bin/pkg-config
    export PKG_CONFIG_PATH=$GTKDIR/lib/pkgconfig
    
    export PANGOFLAGS="--with-fontconfig --with-fontconfiglibdir=$FONTCONFIGLIBDIR --with-fontconfigincludedir=$FONTCONFIGINCLUDEDIR --with-pangocairo"
    
  3. 将目录更改为 $ROOT 并运行 configure

    ./configure -C --prefix=$INSTALLROOT --without-gdk-pixbuf --with-mylibgd --disable-swig --without-x  --disable-tcl --without-ipsepcola --enable-shared --disable-static --with-freetype=$GTKDIR/lib --enable-ltdl $PANGOFLAGS --without-gtk --without-gtkgl
    

    configure 完成后,它将列出已启用的所有 Graphviz 功能。如果存在问题,您可以检查 config.log 中的错误。您可能需要添加或修改其他标志和环境变量,以使 configure 提供所需的设置。运行 configure --help 以查看允许的选项和环境变量。

  4. 运行 make

  5. 运行 make install

这些构建创建了一个功能全面的 Graphviz 版本。您可以根据自己的需求对其进行定制。这对于 MinGW 来说相当简单:只需删除或重置您不想要的选项的标志即可。对于 Visual Studio,您可能需要重置 config.h 中的一些值以及一些编译时选项。


(2.21 >= Graphviz 版本 > 2.14)

为了简化我们的构建过程,尤其是由于大多数 Windows 用户只想要软件的二进制版本,因此 Windows 上的 Graphviz 构建现在使用 uwin,这是一个在 Windows 之上的开源 Unix 层。在这个环境中,我们可以使用与 Unix 上相同的工具和流程。特别地,我们不必维护多个构建文件。

构建 Graphviz

  • 安装第三方库。这可以通过安装 GTK 2.0 或更高版本的 Windows 二进制版本来轻松完成。

  • 下载 Graphviz 源代码包,并将稳定版本 graphviz-VERSION.tar.gz 或开发源代码包 graphviz-working.tar.gz 复制过来。

  • 解压缩包

    例如,您可以使用

    gunzip < graphviz-working.tar.gz | tar xf -
    

    假设 $ROOT 是您存储 Graphviz 源代码的目录。

  • 为您的系统配置包

    cd $ROOT
    configure --disable-shared --enable-static --with-mylibgd --disable-swig --without-x --without-tclsh --with-codegens --disable-ltdl
    

    您可能需要向configure提供额外的参数,以指示您安装 GTK 的位置,您希望将结果安装到的位置(--prefix)以及您想要构建的哪些可选软件包。运行configure --help查看可用的参数集。

  • 构建 Graphviz

    make install
    

据推测,类似的方法也适用于 Cygwin 或 MinGW。以下是一些来自Steve Roush的笔记,描述了他如何在 MinGW 上创建库的静态构建。

  • 安装 MinGW 和 Msys。这提供了类似于迷你 GNU 的编译环境,可以生成与 Windows 兼容的结果。

  • 您可能需要在 Windows "安全模式"下配置和构建。尝试在正常模式下运行./configure;如果它因 "fork" 问题而死机,请使用安全模式。

  • 编辑 "configure" 文件。在这行之后

    DEFS=-DHAVE_CONFIG_H
    

    添加这些行

        case "$host_os" in
        mingw*)
        DEFS="$DEFS -DMSWIN32"
        ;;
        esac
    
  • 运行 configure

    ./configure  --enable-static=yes --enable-shared=no 
    --prefix=/usr/local/ --with-libgd=no --enable-ltdl=no --disable-swig  
    --disable-sharp --disable-guile --disable-io --disable-java 
    --disable-lua --disable-ocaml --disable-perl --disable-php 
    --disable-python --disable-ruby --disable-tcl
    
  • 编辑 lib/Makefile

    替换这些行

    SUBDIRS = cdt graph agraph gd pathplan agutil sfio vmalloc ast vpsc \
        circogen dotgen fdpgen neatogen twopigen common pack gvc \
        ingraphs expr
    

    用这些行替换

    SUBDIRS = cdt graph agraph gd pathplan  vpsc \
        circogen dotgen fdpgen neatogen twopigen common pack gvc \
        ingraphs
    
    make  # builds most of "lib" (see Makefile changes), cmd/dot and cmd/tools - stops on cmd/gvpr
    make install
    

以下是我用来构建simple.c的命令行,在根据https://mailman.research.att.com/pipermail/graphviz-interest/2006q2/003586.html添加了几行之后。

X=simple;gcc -v -I'/usr/local/include/graphviz' -I'/usr/local/include' 
-o $X -O $X.c  -L/usr/local/lib -L/usr/local/lib/graphviz -lgvc  -lgraph 
-lpathplan -lcdt -lgvplugin_core -lgvplugin_dot_layout 
-lgvplugin_neao_layout -lgvplugin_gd -lgvplugin_pango -lgvc -lpathplan

如果您希望直接使用 Visual Studio 或其他非 Unix 环境进行构建,则需要从提供的 Makefile 中获取必要的信息。


(2.14 >= Graphviz 版本 >= 2.3)

我们在 Windows 上使用 MS Visual C++ 6.0 编译器构建 Graphviz。在 Windows 上从源代码构建软件的最简单方法如下所示。

  1. 下载 Windows 源代码包。

  2. 解压缩包

    如果您有 Unix 工具可用,您可以使用

    gunzip < graphviz-win.tgz | tar xf -
    

    如果没有,请双击该文件,WinZip 应该启动,并允许您将所有文件存储到一个目录中。

    假设 $ROOT 是您存储 Graphviz 源代码的目录。

  3. 添加第三方库

    1. zlib 1.1.3 http://www.gzip.org/zlib/
    2. libpng 1.0.6 http://www.libpng.org/pub/png
    3. jpeg-6b 62 http://www.ijg.org/
    4. freetype 2.1.7 http://freetype.sourceforge.net/
    5. expat http://expat.sourceforge.net/

    版本应该至少与指示的版本相同。您可以从 https://www.graphviz.org/Misc/third-party.zip 下载文件。将该包解压缩到$ROOT目录中;这将创建一个名为third-party的子目录。或者,您可以自己获取库,并将它们安装到$ROOT\third-party中。还要注意,这些库包含在二进制发行版中。

  4. 以下列出几种构建软件的方法

    • $ROOT目录中运行脚本$ROOT\build.bat。您首先要检查vc变量是否指向您本地安装的 Visual C。显然,这应该在 DOS 命令窗口中运行。

    • 文件$ROOT\ws\graphviz.dsw是 Graphviz 库和绘图程序的主要工作区。文件$ROOT\ws\tools.dsw提供了其他 Graphviz 工具的工作区。双击这些文件将使用 MS Visual Studio 打开工作区,您可以使用“构建”菜单项来创建各种库和程序。

      请注意,我们已避免所有依赖项(即,没有 .dep 文件),因为我们发现它们往往包含绝对路径名。如有必要,请按照build.bat中使用的顺序进行,以确保安全。

    • 如果您有 Unix 环境,使用真正的 ksh,请在将 PATH、LIB 和 INCLUDE shell 变量设置为 Visual C 程序安装在您机器上的路径以及关联的库和包含文件目录后,运行脚本$ROOT\wmake.sh

构建完成后,所有库和程序都将位于相应源目录的 Release 或 Debug 子目录中。如果您希望将软件安装到某个地方,请编辑文件$ROOT\install.bat,将变量root设置为要安装软件的目录的绝对路径名,然后从$ROOT目录运行脚本$ROOT\install.bat

如果您想更改源文件,您可以直接进行更改并重新构建。但是,如果您想添加新文件或项目,则需要重新创建 makefile 或脚本。

如果您遇到问题或有任何疑问,请联系我们,地址是[email protected].

最后修改日期:2024 年 10 月 6 日:适应 Windows 构建说明以移除 MSBuild 支持 (e013378)