私はAutomakeを使用しています。Automake:Makefileがビルドディレクトリではなくソースディレクトリからファイルを選んでいるのはなぜですか?
私はこのようなdist_man1_MANS
に記載されているいくつかのソースファイルがあります。今
dist_man1_MANS = some-file.1 some-other-file.1
を、Automakeは+ configure
は最終的にMakefile
でこれを生成します。
dist_man1_MANS = some-file.1 some-other-file.1
# ...
install-man1: $(dist_man1_MANS)
# generated recipe here
私は.1
ファイルを前置いないよので、 $(srcdir)
では、ビルドディレクトリ(現在の作業ディレクトリ)からmake
を実行しているので、ビルドディレクトリでそれらを見つけるはずです。
だから、私は/tmp/build
に、例えば、外の木ビルドをやってる:
/path/to/src/configure --prefix=$(pwd)/install
make
make install
をし、ビルドが成功し、つまり、
make
はmanページを検索し、それらをインストールします。しかし、それらはビルドディレクトリにありません。私は、生成されたMakefileにこれを追加します。
今
install-man1: $(dist_man1_MANS)
@echo ">>> $(^)"
@echo "::: $(dist_man1_MANS)"
# generated recipe here
、私は$^
がthe names of all the prerequisites, with spaces between themを意味するので、両方のecho
sが、同じことを印刷することを前提としています。驚いたことに、出力は次のようになります。
>>> /path/to/src/some-file.1 /path/to/src/some-other-file.1
::: some-file.1 some-other-file.1
ので:
- がどのように
make
が正確/path/to/src/
プレフィックスを見つけましたか?この非常に文脈のどこから来るのですか? - なぜ
$^
と$(dist_man1_MANS)
が異なるのですか?