2017-01-13 1 views
0

私はMakefileに新規で、Makefileinstallターゲットを書きたいと思います。私Makefileが配置されている場所/xxxx/yyyがあるMakefileに "install"ターゲットを書き込む方法

DESTDIR=$(DIR_A) BINDIR=/dir_b make -C $(CURDIR)/xxxx/yyy all 

:私のMakefileは、このように別のMakefileから呼び出されることになるだろう。

私のMakefileは、私がインストールしたい2つのバイナリを生成します。つまり、インストールすることによって、両方のバイナリを特定のディレクトリ(BINDIR)にコピーして実行可能にすることです。

この場合、/aaaa/bbbb/binフォルダに2つのバイナリが生成されている場合、どのようにinstallターゲットを書き込むべきですか?

+0

"man install"を開始として見てください –

+1

makefileには「タグ」はありませんが、ルールはありません。チュートリアルを読むことは助けになるはずです(GNU makeに付属しています)。 – Olaf

+0

@Olafそれは "ターゲット"を持っています。ルールは目標を構築するためのものです。 – Kusalananda

答えて

0

「インストール」は「偽」ターゲットになります。あなたがmake installを行うことができ、今

.PHONY: install 
install: 
    install -m 557 /aaaa/bbbb/bin/first /aaaa/bbbb/bin/second $BINDIR 

:そして、私は強くユーティリティinstallの代わりに、cpchmodを使用することをお勧めします。

+0

私はそれをテストしていて、ダミーのフォルダを宛先として追加しました。 私は '' ' インストールした:しかし、私は唯一の "」インストールが最新のものである" を参照してくださいます。mkdir TEMP_DIR インストール-m 755/AAAA/BBBB/binに/最初のTEMP_DIRに ' '' を、と私は作成されたtemp_dirフォルダーは表示されません。なぜなのかご存知ですか? – sh0731

+0

実際、何か不思議なことが起こっています。存在しないバイナリ(/ cccc/dddd/bin/firstなど)に間違ったパスを渡しました。 make installは "install up to date"を返します。なぜそれはエラーを返さないのですか? – sh0731

+0

makeファイルを扱う際には、実際のレイアウトを見ることが非常に重要です。おそらく、makeファイルを質問の一部にすることができますか?私はmakeファイルを試して、それに 'mkdir'を追加しました。すべて動作します。 – DyZ

関連する問題