2011-06-06 11 views
2

http://www.cprogramming.com/tutorial/makefiles_continued.htmlが暗黙の目標を説明してターゲット:暗黙のMakefileは

ほぼ遍在しているいくつかのアクションがあります。たとえば、あなたがのために同じコマンドを実行したい場合があり.cファイルのコレクションを持っているかもしれません。理想的には、ファイルの名前がターゲットになります。暗黙的なターゲット ".c"を使用すると、.cファイルの名前に対応する(.c拡張子を除いた)任意のターゲットに対して実行するコマンドを指定できます。

しかし、試してみると、暗黙的なターゲットは単純に無視されます。次のように私のテストのmakefileは次のとおりです。

Default: Foo.bar 
    echo "In default." 

.bar: 
    echo "In .bar." 

make: *** No rule to make target `Foo.bar', needed by `Default'. Stop. 

私は何をしないのですか?

+1

私はcprogramming.comのウェブマスターです。私は、Maxがこのエラーを私に非常に親切に報告したことを言及したいと思います。暗黙的なターゲットの誤った記述を削除するためのオリジナルのチュートリアルを更新しました。 – alexallain

答えて

3

試してみてください。

default: foo.bar 
    echo "In default." 

%.bar: 
    echo "In .bar." 

あなたは古いスタイルのサフィックスルールについて質問することができる - 例えば、このルールを:

.c.o: 
    cc -c $< 

.Cソースからの.oファイルを構築する方法を作るよう指示。 '%'の書式はパターンルールと呼ばれ、より「近代的」です。私はGNU Make manualを読むことをお勧めします。これはそのようなことについて非常に有益であり、読みやすいです。

+0

これは私が使ってきたものですが、ウェブサイトの例には '.bar'しかありません。ウェブサイトは間違っていますか? – Maxpm

+0

@Maxpm:はい、間違っています。 – Beta