我想检查我的自定义PKG_CONFIG_PATH
中是否存在gmodule
// configure.ac
AC_SUBST([PKG_CONFIG_PATH],"./glib/lib/x86_64-linux-gnu/pkgconfig/")
PKG_PROG_PKG_CONFIG
PKG_CHECK_EXISTS([gmodule-2.0],[],[
AC_MSG_ERROR(can't find gmodule in glib-2.0)
])
但我有以下错误:
checking for libunwind.h... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: error: can't find gmodule in glib-2.0
我百分之百确定gmodule-2.0.pc在我的定制路径中:
> ls ./glib/lib/x86_64-linux-gnu/pkgconfig/
gio-2.0.pc gio-unix-2.0.pc glib-2.0.pc gmodule-2.0.pc gmodule-export-2.0.pc gmodule-no-export-2.0.pc gobject-2.0.pc gthread-2.0.pc
我还可以使用pkg-config查找gmodule-2.0
:
> PKG_CONFIG_PATH="./glib/lib/x86_64-linux-gnu/pkgconfig/" pkg-config gmodule-2.0 --cflags
-pthread -I/home/xxx/fuzz/test/StochFuzz/glib/include -I/home/xxx/fuzz/test/StochFuzz/glib/include/glib-2.0 -I/home/xxx/fuzz/test/StochFuzz/glib/lib/x86_64-linux-gnu/glib-2.0/include
我错过了什么吗?
1条答案
按热度按时间gc0ot86w1#
我错过了什么吗?
看起来你在期待这个..。
..。使
configure
在运行pkg-config
时将./glib/lib/x86_64-linux-gnu/pkgconfig/
用作PKG_CONFIG_PATH
。在这种情况下,你至少错过了AC_SUBST()
的目的是创建一个输出变量。如果您想要将pkg-config路径传递给您的Makefile,那么您需要一个输出变量,但这与您的configure
脚本没有直接关系。1.尽管
AC_SUBST
确实设置了指定外壳变量的值(如果您为其指定值),1.它不一定要导出该变量。
1.赋值不一定出现在
configure
脚本中与configure.ac
中宏的位置对应的位置。1.如果您正在尝试使用与您的项目捆绑在一起的组件(如果您自己的源代码树中的pkg-config数据提供了所需的详细信息,那么您肯定就是这样做的),那么pkg-config就太过分了。只需在
Makefile.am
文件中放置所需的路径和标志,或者如果您没有使用Automake,则直接在Makefile.in
文件中放置所需的路径和标志。如果您坚持使用pkg-config执行此操作,则此变体可能会导致您希望从
PKG_CHECK_EXISTS
宏中执行的行为:如果您还需要将您的定制
PKG_CONFIG_PATH
传送到您的Make文件,那么您可以添加...……但你不应该**。尽管在这种情况下根本不应该使用pkg-config(见上文),但是当您在AutoTools构建系统中使用pkg-config时,使用它的最佳方式完全是在
configure
中。在那里提取所需的路径和标志,并通过输出变量将它们传递到您的生成文件。