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 或更新版本、Qtltdl 的二進位版本,以及 GTSann 的原始碼版本。其他指示可以在 Graphviz gitlab 儲存庫中找到。

這個流程可以而且應該簡化。特別是,第三方軟體不應儲存在兩個位置,而作為發行版本一部分的 Graphviz 檔案應來自原始碼套件,而非單獨儲存。此外,GTS 和 ANN 建置應與 Graphviz 建置分開。作為第三方函式庫,這些應僅在更新原始碼時建置。

(Graphviz 版本 ≥ 2.22)

我們現在建置 Graphviz 的 Visual Studio 和 MinGW 版本。此外,原始碼套件隨附 Visual Studio 的專案檔,因此在這兩種情況下,從原始碼建置應該都相當簡單。

  • 第一步是新增第三方函式庫。這些函式庫列於 此處。最簡單的方法是安裝 Windows 二進位版本的 GTK 2.0 或更新版本。
  • 接下來,下載並解壓縮 Graphviz 原始碼套件,然後複製穩定的發行版本或開發原始碼套件。

令 $ROOT 為您儲存 Graphviz 原始碼的根目錄 (資料夾)。

使用 Visual Studio 建置

  1. 將檔案 $ROOT/windows/config.h 複製到 $ROOT。
  2. 將資料夾 $ROOT/windows/FEATURE 複製到 $ROOT。
  3. 啟動 Visual Studio 並讀取 $ROOT/graphviz.sln。Graphviz 的所有部分都有專案檔。
  4. 修改 include 檔案和函式庫目錄的各種設定,以找到第三方軟體。
  5. 修改軟體安裝位置的設定。
  6. 建置 Graphviz。

使用 MinGW 建置

  1. 安裝 MinGW 和 Msys。這會提供一個迷你 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

  • 安裝第三方函式庫。最簡單的方法是安裝 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 上從原始碼建置軟體的最簡單方法如下

  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://graphviz.dev.org.tw/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 或指令碼。

如果您有問題或疑問,請透過 erg@research.att.com 與我們聯絡。

上次修改時間 2024 年 10 月 6 日:調整 Windows 建置指示以移除 MSBuild 支援 (e013378)