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 (並重新啟動 Visual Studio 或執行 msbuild 後的提示字元)。此資料夾包含經過測試的 Bison、Flex 和其他工具的版本。如果一切順利,相依性現在已設定完成,您可以建置 Graphviz。
(Graphviz 版本 ≥ 2.30)
目前使用 Visual Studio 在 Windows 上進行建置的流程相當簡單,前提是所有必要檔案都可用且已放置在正確的位置。建置假設您已安裝 GTK 2.0 或更新版本、Qt 和 ltdl 的二進位版本,以及 GTS 和 ann 的原始碼版本。其他指示可以在 Graphviz gitlab 儲存庫中找到。
這個流程可以而且應該簡化。特別是,第三方軟體不應儲存在兩個位置,而作為發行版本一部分的 Graphviz 檔案應來自原始碼套件,而非單獨儲存。此外,GTS 和 ANN 建置應與 Graphviz 建置分開。作為第三方函式庫,這些應僅在更新原始碼時建置。
(Graphviz 版本 ≥ 2.22)
我們現在建置 Graphviz 的 Visual Studio 和 MinGW 版本。此外,原始碼套件隨附 Visual Studio 的專案檔,因此在這兩種情況下,從原始碼建置應該都相當簡單。
- 第一步是新增第三方函式庫。這些函式庫列於 此處。最簡單的方法是安裝 Windows 二進位版本的 GTK 2.0 或更新版本。
- 接下來,下載並解壓縮 Graphviz 原始碼套件,然後複製穩定的發行版本或開發原始碼套件。
令 $ROOT 為您儲存 Graphviz 原始碼的根目錄 (資料夾)。
使用 Visual Studio 建置
- 將檔案 $ROOT/windows/config.h 複製到 $ROOT。
- 將資料夾 $ROOT/windows/FEATURE 複製到 $ROOT。
- 啟動 Visual Studio 並讀取 $ROOT/graphviz.sln。Graphviz 的所有部分都有專案檔。
- 修改 include 檔案和函式庫目錄的各種設定,以找到第三方軟體。
- 修改軟體安裝位置的設定。
- 建置 Graphviz。
使用 MinGW 建置
-
安裝 MinGW 和 Msys。這會提供一個迷你 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
-
安裝第三方函式庫。最簡單的方法是安裝 Windows 二進位版本的 GTK 2.0 或更新版本。
-
下載 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 環境進行建置,您需要從提供的 Makefiles 中取得必要的資訊。
(2.14 >= Graphviz 版本 >= 2.3)
我們僅使用 MS Visual C++ 6.0 編譯器在 Windows 上建置 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://graphviz.dev.org.tw/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 或指令碼。
如果您有問題或疑問,請透過 erg@research.att.com 與我們聯絡。