程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP擴展-如何使用文件config.m4,

PHP擴展-如何使用文件config.m4,

編輯:關於PHP編程

PHP擴展-如何使用文件config.m4,


config.m4文件用於指定正在開發的擴展在類unix系統下構建時支持的選項,指定此擴展需要哪些庫以及哪些源文件;使用 GNU autoconf 語法編寫。
注意需要重新執行phpize,config.m4的修改才會生效;
在執行./configure時,所有的輸出將記錄到config.log裡,通過查看此文件可以調試config.m4。

如何從零開始創建一個PHP擴展可以參見文章PHP擴展-擴展的生成和編譯,

config.m4文件常用的語句和宏

以下將以”myext”作為正在開發的擴展名稱進行舉例:

1. 由用戶輸入配置選項
比如–enable-myext, –with-myext-includedir=DIR

PHP_ARG_ENABLE(myext, whether to enable myext support,
[ --enable-ext Enable ext support])

在configure –help時將輸出:–enable-ext Enable ext support

PHP_ARG_WITH(myext-includedir, for myext header,
[ --with-myext-includedir=DIR myext header files], no, no)

在configure –help時將輸出:–with-myext-includedir=DIR myext header files

2. 輸出信息
AC_MSG_CHECKING(message), 在執行configure命令時輸出”checking “;

AC_MSG_RESULT(value), 輸出check的結果;

AC_MSG_ERROR(message), 輸出一條消息並退出configure的執行;

3. 添加包含路徑
PHP_ADD_INCLUDE(path), 添加編譯時的包含路徑;

4. 鏈接第三方庫
PHP_ADD_LIBRARY_WITH_PATH(),添加編譯時的鏈接庫路徑
PHP_ADD_LIBRARY(), 添加鏈接庫;

5. 其他
AC_DEFINE(name,value,description), 向php_config.h添加一個define:#define name value // description;

AC_TRY_COMPILE (includes, function-body, [action-if-found [, action-if-not-found]])

示例如下:

...
AC_MSG_CHECKING(PHP version)
...
AC_MSG_RESULT([$PHP_VERSION])
...
PHP_MAJOR_VERSION=`echo $PHP_VERSION | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/ \1/g' 2>/dev/null`
if test $PHP_MAJOR_VERSION -lt 5; then
AC_MSG_ERROR([need at least PHP 5 or newer])
fi
...
PHP_ADD_INCLUDE([$ext_srcdir/snappy])
...
PHP_ADD_LIBRARY_WITH_PATH(snappy, $LIBSNAPPY_LIBDIR, SNAPPY_SHARED_LIBADD)
...
LIBNAME=stdc++
PHP_ADD_LIBRARY($LIBNAME, , SNAPPY_SHARED_LIBADD)

參考:Talking to the UNIX build system: config.m4

原文地址:PHP擴展-如何使用文件config.m4

微信公眾號
qrcode_for_gh_61c6224cfae9_258

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved