Windows

Windowsでのビルドについて

(Graphviz バージョン 12.2.0 以上)

現在、WindowsではCMakeのみがサポートされているビルドシステムです。詳細は 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リポジトリにあります。

このプロセス全体は簡素化されるべきです。特に、サードパーティソフトウェアを2つの場所に保存する必要はなく、リリースの一部となるGraphvizファイルはソースパッケージから取得し、別々に保存するべきではありません。さらに、GTSとANNのビルドはGraphvizのビルドとは別にすべきです。サードパーティライブラリとして、ソースが更新された場合にのみビルドする必要があります。

(Graphviz バージョン 2.22 以上)

現在、Visual Studio版とMinGW版のGraphvizを両方ビルドしています。さらに、ソースパッケージにはVisual Studioのプロジェクトファイルが含まれているため、どちらの場合でもソースからのビルドは非常に簡単です。

  • 最初の手順は、サードパーティライブラリを追加することです。これらはこちらにリストされています。GTK 2.0以降のWindowsバイナリバージョンをインストールするのが最も簡単です。
  • 次に、Graphvizソースパッケージをダウンロードして解凍し、安定版リリースまたは開発ソースパッケージをコピーします。

Graphvizソースを保存したルートディレクトリ(フォルダ)を$ROOTとします。

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をインストールします。これにより、Windows互換の結果を生成するミニGNUライクなコンパイル環境が提供されます。

  2. マシンの設定に基づいて環境変数を設定し、以下の最初の6つの値を指定します。

    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 --help`を実行します。

  4. `make`を実行します。

  5. `make install`を実行します。

これらのビルドは、機能豊富なGraphvizバージョンを作成します。必要に応じてカスタマイズできます。MinGWの場合、これは非常に簡単です。不要なオプションのフラグを削除またはリセットするだけです。Visual Studioの場合、おそらく`config.h`のいくつかの値と、いくつかのコンパイル時オプションをリセットする必要があります。


(2.21 >= Graphvizバージョン > 2.14)

ビルドプロセスを簡素化するために、特にほとんどのWindowsユーザーがソフトウェアのバイナリバージョンのみを必要とするため、WindowsのGraphvizビルドは現在、オープンソースのUnixレイヤーであるuwinを使用しています。この環境では、Unixで使用されるツールとプロセスを基本的に同じように使用できます。特に、複数のビルドファイルを維持する必要はありません。

Graphvizをビルドするには

  • サードパーティライブラリをインストールします。GTK 2.0以降のWindowsバイナリバージョンをインストールするのが最も簡単です。

  • Graphvizソースパッケージをダウンロードし、安定版リリース`graphviz-`_VERSION`.tar.gz`または開発ソースパッケージ`graphviz-working.tar.gz`をコピーします。

  • パッケージを解凍します。

    例えば、以下を使用できます。

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

    Graphvizソースを保存したディレクトリを`$ROOT`とします。

  • システムに合わせてパッケージを設定します。

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

    GTKをインストールした場所、結果をインストールする場所(`--prefix`)、ビルドする追加のオプションパッケージを指定するために、`configure`に追加の引数を指定する必要があるでしょう。使用可能な引数のセットを確認するには、`configure --help`を実行します。

  • Graphvizをビルドします。

    make install
    

おそらく、同様のアプローチがCygwinまたはMinGWでも機能します。以下は、Steve Roushによる、MinGWでライブラリの静的ビルドを作成する方法について説明するいくつかのメモです。

  • MinGWとMsysをインストールします。これにより、Windows互換の結果を生成するミニGNUライクなコンパイル環境が提供されます。

  • 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から必要な情報を得る必要があります。


(Graphvizバージョン 2.3以上 2.14以下)

Windowsでは、MS Visual C++ 6.0コンパイラのみを使用してGraphvizをビルドします。Windowsでソースからソフトウェアをビルドする最も簡単な方法は次のとおりです。

  1. Windowsソースパッケージをダウンロードします。

  2. パッケージを解凍します。

    Unixツールが利用可能な場合は、次のコマンドを使用できます。

    gunzip < graphviz-win.tgz | tar xf -
    

    利用できない場合は、ファイルをダブルクリックするとWinZipが起動し、すべてのファイルをディレクトリに保存できます。

    Graphvizソースを保存したディレクトリを`$ROOT`とします。

  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.dokyumento.jp/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で使用されている順序に従ってください。

    • 実際のkshのあるUnix環境がある場合は、Visual Cプログラムがマシンにインストールされているパス、および関連するライブラリおよびインクルードファイルディレクトリにPATH、LIB、およびINCLUDEシェル変数を設定した後、$ROOT\wmake.shスクリプトを実行します。

ビルドが完了すると、すべてのライブラリとプログラムは、対応するソースディレクトリのReleaseまたはDebugサブディレクトリにあります。ソフトウェアをどこかへインストールする場合は、$ROOT\install.batファイルを編集して、root変数をソフトウェアをインストールするディレクトリの絶対パス名に設定し、$ROOTディレクトリから$ROOT\install.batスクリプトを実行します。

ソースファイルを変更する場合は、変更して再ビルドするだけで済みます。ただし、新しいファイルまたはプロジェクトを追加する場合は、makefileまたはスクリプトをやり直す必要があります。

問題や質問がある場合は、erg@research.att.comまでお問い合わせください。