xfce4 dev tools实际上基本是封装了一些autoconf的宏函数

比如XDT_I18N:

  1. AC_DEFUN([XDT_I18N],
  2. [
  3. dnl Substitute GETTEXT_PACKAGE variable
  4. GETTEXT_PACKAGE=m4_default([$], [AC_PACKAGE_TARNAME()])
  5. AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Name of default gettext domain])
  6. AC_SUBST([GETTEXT_PACKAGE])
  7.  
  8. dnl gettext and stuff
  9. ALL_LINGUAS="$1"
  10. AM_GLIB_GNU_GETTEXT()
  11.  
  12. dnl This is required on some Linux systems
  13. AC_CHECK_FUNC([bind_textdomain_codeset])
  14.  
  15. dnl Determine where to install locale files
  16. AC_MSG_CHECKING([for locales directory])
  17. AC_ARG_WITH([locales-dir],
  18. [
  19. AC_HELP_STRING([--with-locales-dir=DIR], [Install locales into DIR])
  20. ], [localedir=$withval],
  21. [
  22. if test x"$CATOBJEXT" = x".mo"; then
  23. localedir=$libdir/locale
  24. else
  25. localedir=$datadir/locale
  26. fi
  27. ])
  28. AC_MSG_RESULT([$localedir])
  29. AC_SUBST([localedir])
  30.  
  31. dnl Determine additional xgettext flags
  32. AC_MSG_CHECKING([for additional xgettext flags])
  33. if test x"$XGETTEXT_ARGS" = x""; then
  34. XGETTEXT_ARGS="--keyword=Q_ --from-code=UTF-8";
  35. else
  36. XGETTEXT_ARGS="$XGETTEXT_ARGS --keyword=Q_ --from-code=UTF-8";
  37. fi
  38. AC_SUBST([XGETTEXT_ARGS])
  39. AC_MSG_RESULT([$XGETTEXT_ARGS])
  40. ])

主要内容就在前面五行的实现:

  1. GETTEXT_PACKAGE=m4_default([$], [AC_PACKAGE_TARNAME()])
  2. AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Name of default gettext domain])
  3. AC_SUBST([GETTEXT_PACKAGE])
  4. ALL_LINGUAS="$1"
  5. AM_GLIB_GNU_GETTEXT()

定义了GETTEXT_PACKAGE宏,然后将参数1传递给ALL_LINGUAS

而XDT_CHECK_PACKAGE的实现也很简单,基本上就是封装PKG_CONFIG

  1. AC_DEFUN([XDT_CHECK_PACKAGE],
  2. [
  3. XDT_PROG_PKG_CONFIG()
  4.  
  5. AC_MSG_CHECKING([for $ >= $])
  6. if $PKG_CONFIG "--atleast-version=$3" "$2" >/dev/null >&; then
  7. $1_VERSION=`$PKG_CONFIG --modversion "$2"`
  8. AC_MSG_RESULT([$$1_VERSION])
  9.  
  10. AC_MSG_CHECKING([$1_CFLAGS])
  11. $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
  12. AC_MSG_RESULT([$$1_CFLAGS])
  13.  
  14. AC_MSG_CHECKING([$1_LIBS])
  15. $1_LIBS=`$PKG_CONFIG --libs "$2"`
  16. AC_MSG_RESULT([$$1_LIBS])
  17.  
  18. $1_REQUIRED_VERSION=$
  19.  
  20. AC_SUBST([$1_VERSION])
  21. AC_SUBST([$1_CFLAGS])
  22. AC_SUBST([$1_LIBS])
  23. AC_SUBST([$1_REQUIRED_VERSION])
  24.  
  25. ifelse([$], , , [$])
  26. elif $PKG_CONFIG --exists "$2" >/dev/null >&; then
  27. xdt_cv_version=`$PKG_CONFIG --modversion "$2"`
  28. AC_MSG_RESULT([found, but $xdt_cv_version])
  29.  
  30. ifelse([$], ,
  31. [
  32. echo "*** The required package $2 was found on your system,"
  33. echo "*** but the installed version ($xdt_cv_version) is too old."
  34. echo "*** Please upgrade $2 to atleast version $3, or adjust"
  35. echo "*** the PKG_CONFIG_PATH environment variable if you installed"
  36. echo "*** the new version of the package in a nonstandard prefix so"
  37. echo "*** pkg-config is able to find it."
  38. exit
  39. ], [$])
  40. else
  41. AC_MSG_RESULT([not found])
  42.  
  43. ifelse([$], ,
  44. [
  45. echo "*** The required package $2 was not found on your system."
  46. echo "*** Please install $2 (atleast version $3) or adjust"
  47. echo "*** the PKG_CONFIG_PATH environment variable if you"
  48. echo "*** installed the package in a nonstandard prefix so that"
  49. echo "*** pkg-config is able to find it."
  50. exit
  51. ], [$])
  52. fi
  53. ])

XDT_PROG_PKG_CONFIG检测系统中是否存在PKG_CONFIG,如果

存在,则通过pkg-config来配置CFLAGS/LIBS等4个变量

xfce4 dev tools的一些说明的更多相关文章

  1. JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)

    需求: 在界面的右键事件中添加一个打开开发者选项的菜单(Show Dev Tools) 所以我们可以看到的是在界面上右键,会有默认的一些菜单项(前进,后退,打印,查看源码),而这些功能并不一定是我们需 ...

  2. Chrome Dev Tools :成为更高效的开发人员

    原文出处 http://blog.jobbole.com/22065/ 实时CSS Style编辑 选择一个Dom,可以对Dom进行编辑和操作,实时修改Css Style, 同时CssStyle可以保 ...

  3. 谷歌浏览器 DEV Tools

    谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览器.伴随每六个星期一次的发布周期和不断扩大的强大的开发功能,Chrome变成了一个必须的工具.大多数可能熟悉关于chorme的许多特点,例如使用c ...

  4. chrome dev tools

    chrome dev tools介绍一下Chrome dev tools 的基本使用和一些意想不到的小技巧.\\Chrome Developer Tools 是Chrome内嵌的一系列编辑和调试的工具 ...

  5. 15个你不得不知道的Chrome dev tools的小技巧

    转载自:https://www.imooc.com/article/2559 谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览器.伴随每六个星期一次的发布周期和不断扩大的强大的开发功能,Chro ...

  6. kibana dev tools快捷键

    kibana dev tools快捷键 ctrl+enter  提交请求 ctrl+i 自动缩进 ctrl+enter 提交请求 down 打开自动补全菜单 enter或tab 选中项自动补全 esc ...

  7. [D3] Debug D3 v4 with Dev Tools

    Since D3 outputs standard markup, you can use familiar dev tools and inspectors to debug your visual ...

  8. 第十五章·Kibana深入-Dev Tools及Lucene语法

    Dev Tools介绍 Dev Tools 页面包含开发工具,您可以使用这些Dev Tools与Kibana中的数据进行交互. 原先的交互式控制台Sense,使用户方便的通过浏览器直接与Elastic ...

  9. 前端性能优化之利用 Chrome Dev Tools 进行页面性能分析

    背景 我们经常使用 Chrome Dev Tools 来开发调试,但是很少知道怎么利用它来分析页面性能,这篇文章,我将详细说明怎样利用 Chrome Dev Tools 进行页面性能分析及性能报告数据 ...

随机推荐

  1. word2vec 实践

    关于word2vec,这方面无论中英文的参考资料相当的多,英文方面既可以看官方推荐的论文,也可以看gensim作者Radim Řehůřek博士写得一些文章.而中文方面,推荐 @licstar的< ...

  2. 链接错误-库冲突(libcmt.lib和libcmtd.lib)

    在同一个项目中,所有的源文件必须链接相同的C运行时库.如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是 ...

  3. 61-umask 简明笔记

    设定在创建文件时的权限掩码 umask [mask] 参数 mask可以是3位八进制数或者是如同在chmod中使用的符号值,mask指定不允许的权限(文件的实际权限是777减去umask值) 如果没有 ...

  4. android 入门笔迹(1)

    环境搭建JDK,JRE,Android SDK,ADT,Eclipse,安卓模拟器AVD xml控制UI界面  Java代码控制UI界面  XML与Java混合控制UI界面  UI:userinter ...

  5. 对象关系映射ORM

    对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效 ...

  6. iOS开发小技巧--巧用ImageView中的mode(解决图片被拉伸的情况)

    一.自己遇到的问题:在布局ImageView的时候,通过约束将ImageView布局好,但是里面的图片被拉伸的很难看.这时候就用到了Mode属性,如图: 代码实现方式: 二.让图片按照比例拉伸,并不是 ...

  7. Maven-setting.xml详解

    settings.xml对于maven来说相当于全局性的配置,用于所有的项目,当Maven运行过程中的各种配置,例如pom.xml,不想绑定到一个固定的project或者要分配给用户时,我们使用set ...

  8. 73.Android之SparseArray替代HashMap

    转载:https://liuzhichao.com/p/832.html HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定 ...

  9. eclipse中xml文件不能自动提示的解决办法

    1.出现不能提示的情况

  10. CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)

    由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...