<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysql-xdevapi.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'mysql-xdevapi.build.php',
    1 => 'ソースコードからビルド / コンパイルする',
    2 => 'ソースコードからビルド / コンパイルする',
  ),
  'up' => 
  array (
    0 => 'mysql-xdevapi.setup.php',
    1 => 'インストール/設定',
  ),
  'prev' => 
  array (
    0 => 'mysql-xdevapi.configuration.php',
    1 => '実行時設定',
  ),
  'next' => 
  array (
    0 => 'mysql-xdevapi.constants.php',
    1 => '定義済み定数',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/mysql_xdevapi/setup.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysql-xdevapi.build" class="section">
   <h2 class="title">ソースコードからビルド / コンパイルする</h2>
   <p class="para">
    この拡張モジュールをソースコードからコンパイルする際に、考慮すべき事項は以下です。
   </p>

    <ul class="itemizedlist">
      <li class="listitem">
        <p class="para">
          拡張モジュールの名前は &#039;mysql_xdevapi&#039; です。
          よって、 <code class="literal">--enable-mysql-xdevapi</code> を使ってください。
        </p>
      </li>
      <li class="listitem">
        <p class="para">
          Boost が必須です。
          オプションで configure オプション --with-boost=DIR や
          MYSQL_XDEVAPI_BOOST_ROOT 環境変数が使えます。
          boost のヘッダファイルのみが必須で、ライブラリファイルは必要ありません。
        </p>
      </li>
      <li class="listitem">
        <p class="para">
          Google の Protocol Buffers (protobuf) が必須です。
          オプションで configure オプション --with-protobuf=DIR や
          MYSQL_XDEVAPI_PROTOBUF_ROOT 環境変数が使えます。
        </p>
        <p class="para">
          protobuf ファイル (*.pb.cc/.h) を生成するのに
          オプションで <code class="literal">make protobufs</code> が使えますし、
          生成された protobuf ファイルを削除するのに
          <code class="literal">make clean-protobufs</code> が使えます。
        </p>
        <p class="para">
          Windows 特有の protobuf に関する注意:
          環境によっては、マルチスレッドに対応した
          DLL ランタイムが含まれる静的ライブラリが必要かもしれません。
          これを準備するには、以下のオプションを使ってください:
          <em>-Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF</em>
        </p>
      </li>
      <li class="listitem">
        <p class="para">
          Google の Protocol Buffers / protocol コンパイラ (protoc) が必須です。
          適切な &#039;protoc&#039; コマンドが ビルド中に PATH が通った場所に置いておいてください。
          このことは、Windows PHP SDK バッチスクリプトが
          この環境変数を上書きする可能性があるため特に重要です。
        </p>
      </li>
        <li class="listitem">
          <p class="para">
            Bison は必須です。PATH が通った場所に置いておいてください。
          </p>
          <p class="para">
            Window 特有の bison に関する注意:
            PHP SDK と同梱されている bison を使うことを強く推奨します。
            さもなければ、次のメッセージに似たエラーが出る可能性があります。

            &quot;zend_globals_macros.h(39):
            error C2375: &#039;zendparse&#039;: redefinition; different linkage
            Zend/zend_language_parser.h(214): note: see declaration of &#039;zendparse&#039;&quot;

            Windows PHP SDK バッチスクリプトが
            環境変数を上書きする可能性があることにも注意してください。
          </p>
        </li>
      <li class="listitem">
        <p class="para">
          Windows 特有の注意:
          環境を準備するために、オフィシャルな Windows ビルドドキュメント
          (<a href="https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2" class="link external">&raquo;&nbsp;現行のSDK</a>)
          を参照ください
        </p>
        <p class="para">
          全てのファイルpathについて、スラッシュ &#039;/&#039; ではなく、
          バックスラッシュ &#039;\\&#039; を使うことを推奨します。
        </p>
      </li>
    </ul>
  </div><?php manual_footer($setup); ?>