给定一个使用 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
这并没有回答问题,但我担心这已经是最好的了......