給定一個使用 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
這並沒有回答問題,但我擔心這已經是最好的了...