如何從 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

這並沒有回答問題,但我擔心這已經是最好的了...

相關內容