参考URLから、FindPHP5.cmake を生成します。テキストを切り出して php5.diff にしたと仮定
$ patch -p1 < php5.diff
こいつを、CMake の /share/CMake/Modules/ 下にコピーします。cmake のバージョンが上がると、標準のモジュールとして取り込まれているかもしれません。
CMakeLists.txt 中での使い方は
FIND_PACKAGE (PHP5) ###################################################### # Manual set for PHP5 ###################################################### #SET (PHP5_INCLUDE_PATH "/usr/include/php5") #SET (PHP5_EXECUTABLE "/usr/bin/php5") IF (NOT PHP5FOUND) MESSAGE ("---------------------------------------") MESSAGE (" !!! FATAL ERROR !!! ") MESSAGE ("---------------------------------------") MESSAGE (FATAL_ERROR "PHP5 does not found.") ENDIF (NOT PHP5FOUND) FIND_PACKAGE (SWIG REQUIRED) INCLUDE (${SWIG_USE_FILE}) SET (CMAKE_SWIG_FLAGS "") SET_SOURCE_FILES_PROPERTIES (hoge.i PROPERTIES CPLUSPLUS ON) SWIG_ADD_MODULE(hoge php5 hoge.i hoge.cpp fuga.cpp) INCLUDE_DIRECTORIES (${PHP5_INCLUDE_DIR} ${PHP5_MAIN_INCLUDE_DIR} ${PHP5_TSRM_INCLUDE_DIR} ${PHP5_ZEND_INCLUDE_DIR} ${PHP5_REGEX_INCLUDE_DIR} ${PHP5_EXT_INCLUDE_DIR} ${PHP5_DATE_INCLUDE_DIR} ${PHP5_STANDARD_INCLUDE_DIR} ${INCLUDE_DIRECTORIES})
などとして、
$ cmake . -DCMAKE_BUILD_TYPE=Release
ビルドをすると、"hoge.php" と "hoge.so" が生成されます。
あとは、runme.php を
<?php require "hoge.php"; $hoge = new fuga(); $hoge->bar(); ?>
という感じで使えます。
ここからは、Ubuntu 固有かもしれません。
/etc/php5/conf.d/hoge.ini を
# configuration for hoge module extension=hoge.so
としてやり、
/usr/lib/php5/20060613
の下に、hoge.so をコピーしました。なんかしらんけど、こんなんでコマンド・プロンプトからは動きました。
追記:CentOS 5.2 では、swig のバージョンが古くてコンパイルできません。rpmforge の swig は、輪をかけて古いです。という事で、本家からソースをダウンロードして
$ ./configure --prefix=/usr $ make install
しました。
追記:CentOS 5.2 では、hoge.so を /usr/lib64/php/modules 下にコピーすればOKでした。i386 環境では、/usr/lib/php/modules だと推測されます。
0 件のコメント:
コメントを投稿