zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    centos7 修复引导
    Django 过滤器
    Django 面向对象orm
    Django models字段查询谓词表
    linux常用的监控命令
    常用SQL语句
    python实现FTP服务器
    用python做一个图片验证码
    rsync
    jsonp的理解
  • 原文地址:https://www.cnblogs.com/beatzeus/p/6085366.html
Copyright © 2011-2022 走看看