我正在寻找解决我的问题一段时间并怀疑我选择了错误的方法,但它看起来很简单,可能。
基本上我想通知我的应用程序将安装一些额外的数据。我是通过在编译期间定义预处理器变量来实现的。不幸的是,数据安装和应用程序编译是在两个单独的Makefile(由autotools生成)中定义的,我不知道如何在它们之间传递这个安装路径。
我从项目中提取了有问题的部分,所以这是它的样子:
/
|-- configure.ac
|-- Makefile.am
|-- info
| \-- index.html
\-- src
|-- Makefile.am
\-- main.cpp
configure.ac
AC_INIT(foo, 1.0)
AC_CONFIG_SRCDIR(src/main.cpp)
AM_INIT_AUTOMAKE
AC_PROG_CXX
AC_OUTPUT(Makefile src/Makefile)
Makefile.am
infodir = $(datadir)/foo/
nobase_dist_info_DATA = info/index.html
SUBDIRS = . src
的src / Makefile.am
bin_PROGRAMS = foo
foo_SOURCES = main.cpp
foo_CPPFLAGS = -DWEB_PATH=\"$(infodir)\"
未定义src / Makefile中的./configure $(infodir)
之后。如何告诉src / Makefile.am使用顶级Makefile中的值生成此变量?或者,如果它只是错误的方式,我怎么能以正确的方式实现我的目标?
答案 0 :(得分:0)
为此,您最好使用非递归make。
但是,如果您真的想这样做,那么您可以使用包含。将infodir
的定义放在名为Makefile-common.am.inc
之类的文件中,然后在每个Makefile中写入
include $(top_srcdir)/Makefile-common.am.inc