/ / Come passare le variabili tra Makefile autogenerati ricorsivi - makefile, autotools, automake

Come passare le variabili tra Makefile autogenerati ricorsivi - makefile, autotools, automake

Sto cercando una soluzione del mio problema per un po 'e ho il sospetto che ho scelto un approccio sbagliato, ma sembrava abbastanza semplice da essere possibile.

Fondamentalmente voglio informare la mia applicazione dovealcuni dati aggiuntivi verranno installati. Lo sto facendo definendo la variabile del preprocessore durante la compilazione. Sfortunatamente l'installazione dei dati e la compilazione delle applicazioni sono definite in due Makefile separati (generati con gli autotools) e non so come passare questo percorso di installazione tra di loro.

Ho estratto la parte problematica dal mio progetto, quindi ecco come appare:

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

Dopo ./configure $(infodir) in src / Makefile non è definito. Come posso dire a src / Makefile.am di generare questa variabile con il valore del Makefile di alto livello? Oppure, se è solo un modo sbagliato di farlo, come posso raggiungere il mio obiettivo nel modo giusto?

risposte:

0 per risposta № 1

Per questo, staresti meglio usando la marca non ricorsiva.

Tuttavia, se vuoi davvero farlo in questo modo, puoi utilizzare include. Metti la definizione di infodir in un file chiamato qualcosa di simile Makefile-common.am.inc e poi in ogni Makefile scrivi

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