/ / Como passar variáveis ​​entre Makefiles recursivos gerados automaticamente - makefile, autotools, automake

Como passar variáveis ​​entre Makefiles recursivos autogerados - makefile, autotools, automake

Estou procurando a solução do meu problema por um tempo e suspeitando que escolhi a abordagem errada, mas parecia simples o suficiente para ser possível.

Basicamente, quero informar minha inscrição ondealguns dados adicionais serão instalados. Estou fazendo isso definindo a variável pré-processador durante a compilação. Infelizmente, a instalação de dados e a compilação de aplicativos são definidas em dois Makefiles separados (gerados com ferramentas automáticas) e não sei como passar esse caminho de instalação entre eles.

Eu extraí a parte problemática do meu projeto, então aqui está como ele se parece:

/
|-- 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)"

Após ./configure $(infodir) no src / Makefile não está definido. Como posso dizer ao src / Makefile.am para gerar essa variável com o valor do Makefile de nível superior? Ou, se é apenas uma maneira errada de fazê-lo, como posso alcançar meu objetivo da maneira certa?

Respostas:

0 para resposta № 1

Para isso, seria melhor usar uma marca não recursiva.

No entanto, se você realmente quiser fazer dessa maneira, poderá usar as inclusões. Coloque a definição de infodir em um arquivo chamado algo como Makefile-common.am.inc e depois em cada Makefile escreva

include $(top_srcdir)/Makefile-common.am.inc