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 № 1Para 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