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 或更高版本、Qt 和 ltdl 的二进制版本,以及 GTS 和 ann 的源代码版本。可在 Graphviz gitlab 存储库 中找到更多说明。
整个过程都可以在很大程度上简化。特别是,第三方软件不应该存储在两个地方,并且发布中包含的 Graphviz 文件应该来自源代码包,而不是单独存储。此外,GTS 和 ANN 构建应该与 Graphviz 构建分离。作为第三方库,这些应该只在源代码更新时构建。
(Graphviz 版本 ≥ 2.22)
我们现在构建 Visual Studio 和 MinGW 版本的 Graphviz。此外,源代码包附带 Visual Studio 的项目文件,因此从源代码构建在任何一种情况下都应该相当简单。
- 第一步是添加第三方库。它们列在 这里。这可以通过安装 GTK 2.0 或更高版本的 Windows 二进制版本来轻松完成。
- 接下来,下载并解压缩 Graphviz 源代码包,并将稳定版本或开发源代码包复制过来。
假设 $ROOT 是您存储 Graphviz 源代码的根目录(文件夹)。
使用 Visual Studio 构建
- 将文件 $ROOT/windows/config.h 复制到 $ROOT 中。
- 将文件夹 $ROOT/windows/FEATURE 复制到 $ROOT 中。
- 启动 Visual Studio 并读取 $ROOT/graphviz.sln。所有 Graphviz 部件都有项目文件。
- 修改各种设置以查找包含文件和库目录,以查找第三方软件。
- 修改设置以指定您希望软件安装的位置。
- 构建 Graphviz。
使用 MinGW 构建
-
安装 MinGW 和 Msys。这提供了类似于 mini GNU 的编译环境
-
根据您的机器设置环境变量,为以下前六个变量赋值
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"
-
将目录更改为 $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
以查看允许的选项和环境变量。 -
运行
make
-
运行
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 上从源代码构建软件的最简单方法如下所示。
-
解压缩包
如果您有 Unix 工具可用,您可以使用
gunzip < graphviz-win.tgz | tar xf -
如果没有,请双击该文件,WinZip 应该启动,并允许您将所有文件存储到一个目录中。
假设
$ROOT
是您存储 Graphviz 源代码的目录。 -
添加第三方库
- zlib 1.1.3 http://www.gzip.org/zlib/
- libpng 1.0.6 http://www.libpng.org/pub/png
- jpeg-6b 62 http://www.ijg.org/
- freetype 2.1.7 http://freetype.sourceforge.net/
- expat http://expat.sourceforge.net/
版本应该至少与指示的版本相同。您可以从 https://www.graphviz.org/Misc/third-party.zip 下载文件。将该包解压缩到
$ROOT
目录中;这将创建一个名为third-party
的子目录。或者,您可以自己获取库,并将它们安装到$ROOT\third-party
中。还要注意,这些库包含在二进制发行版中。 -
以下列出几种构建软件的方法
-
在
$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].