我有两个使用autoconf的用户。项目A通过AC_CONFIG_SUBDIRS()使用项目B
项目A configure.ac:
AC_CONFIG_SUBDIRS([projectb])
项目B configure.ac:
AC_DEFINE([NEWDEFINE])
我想将NEWDEFINE从项目B导出到项目A。
a.c:
#ifndef NEWDEFINE
#error NEWDEFINE not defined
#endif
$ autoreconf
$ ./configure
$ make
a.c:2:2: error: #error PTHREAD not defined
2 | #error NEWDEFINE not defined
| ^~~~~
我想在项目A的a. c中查看NEWDEFINE。
1条答案
按热度按时间wqnecbli1#
我想将NEWDEFINE从项目B导出到项目A。
AC_CONFIG_SUBDIRS
用于配置捆绑的独立项目。这样一个项目的配置是它自己的。如果你正在寻找这样一个项目的 external 宏,那么你会在项目的一个公共头文件中找到它,需要它的项目A源应该是#include
。可能是生成的header。如果你想要的宏不能以这种方式访问,那么初步估计,它根本不可用。也就是说,项目A的构建不应该依赖于项目B或任何其他单独项目的内部构建细节。替代方案包括:
AC_CONFIG_HEADERS
,那么宏定义将被写入该项目的config.h
(这是一个 * 内部 * 头),然后从那里以任何方式获得它。其中最糟糕的是将#include
项目B的config.h
直接放到常规源代码中--不要这样做。无论如何,当项目B的
configure
由项目A的configure
在AC_CONFIG_SUBDIRS
的控制下运行时,您无法将项目B的configure
生成的数据获取到项目A的configure
中。结构和时间安排不起作用。