如何从 GNU Automake 包构建特定文件?

如何从 GNU Automake 包构建特定文件?

给定一个使用 GNU Automake 的源代码包,典型的构建如下所示:

cd ${srcdir}
./congigure
./make

要构建单个文件而不是所有文件,make通常会接受:

$ make path/to/file

但是,这会返回一个错误:

make: *** No rule to make target 'path/to/file'. Stop.

所需的文件位于包含其自己的 makefile 的子目录中。可以进入该子目录并./configure && make file在那里执行操作,每次失败时计算出丢失的依赖项make,执行类似的操作来提供这些依赖项并重复该过程,直到make成功生成所需的文件。

但肯定有一个更简单的方法......?

那么,假设一个由 GNU Automake 干净地构建的典型 Linux 包,是否可以告诉它构建单个文件(特别是二进制可执行文件)?

答案1

如果子目录中有一个 makefile,您可能需要调用该 makefile。

make -C path/to file

答案2

我能想到的最好办法是使用循环for来构建依赖的子目录,然后从其目录中构建文件:

for lib in dependency1 dependency2 dependency3
do
  cd ${srcdir}/libs/${lib}
  ./configure --prefix=/usr
  make LDFLAGS+=-lstdc++
done

cd ${srcdir}/libs/directory

./configure --prefix=/usr
  --localstatedir=/var \
  --mandir=/usr/share/man
make LDFLAGS+=-lstdc++ file

这并没有回答问题,但我担心这已经是最好的了......

相关内容