首页 类库下载 PHP类库 在php扩展开发中如何使用pkg-config

在php扩展开发中如何使用pkg-config

Oct 14, 2016 am 10:49 AM

首先科普下pkg-config能干啥。下面是维基百科对pkg-config的说明:
pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。
简单的说,pkg-config主要提供如下几个功能:

1、检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。
2、获得编译预处理参数,如宏定义,头文件的位置。
3、获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。
4、自动加入所依赖的其它库的设置。

最近开发一个用于图片裁剪的php扩展用到了opencv。opencv需要加载的so库很多,手动加入到config.m4中,太麻烦,而且也不利用后期维护。幸好opencv提供了opencv.pc文件,这样就可以使用pkg-config自动获取编译的参数。

下面是我在config.m4中写的自动加载opencv相关so库和头文件的代码。

dnl # --with-tclip -> check with-path
  SEARCH_PATH="/usr/lib/pkgconfig" # 定义pkgconfig文件,即扩展名pc文件存放路径
  SEARCH_FOR="opencv.pc"  # 要寻找的文件
  if test -r $PHP_TCLIP/$SEARCH_FOR; then # 
     TCLIP_DIR=$PHP_TCLIP
  else # search default path list
     AC_MSG_CHECKING([for tclip files in default path])
     for i in $SEARCH_PATH ; do
       if test -r $i/$SEARCH_FOR; then
         TCLIP_DIR=$i
         AC_MSG_RESULT(found in $i)
       fi
     done
  fi
  dnl
  if test -z "$TCLIP_DIR"; then
     AC_MSG_RESULT([not found])
     AC_MSG_ERROR([Please reinstall the tclip distribution])
  fi
  
  OPENCV_FLAGS="`pkg-config opencv --libs --cflags opencv`"
  for i in $OPENCV_FLAGS;do
        if test ${i:0:2} = "-I" ;then
                PHP_ADD_INCLUDE(${i:2})
        elif test ${i:${#i}-3} = ".so" ;then
                dir_name=`dirname $i`
                file_name=${i/$dir_name/}
                file_name=${file_name/\/lib/}
                file_name=${file_name/.so/}
        PHP_ADD_LIBRARY_WITH_PATH($file_name,$dir_name,TCLIP_SHARED_LIBADD)
        fi
  done
登录后复制

注意:
if的条件部分请不要用大括号的方式,否则m4生成的makefile文件中会有语法错误。

参考文档
http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/ 《理解 pkg-config 工具》
http://www.php.net/manual/zh/internals2.buildsys.configunix.php 《与 UNIX 构建系统交互: config.m4》


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)