"main.c"というファイルがあります。最も単純なMakefileは何ですか?./blah
のように実行できる実行可能ファイルにこのファイルをコンパイルする必要がありますか?最も単純なMAKEFILEは何ですか?私は単一のCファイルのための作品を持つことができましたか?
答えて
all: blah
blah: main.c
gcc main.c -o blah
私は何かが表示される前に自分の答えを書いて投稿しましたが、私は「宿題」タグを見ませんでした。私はChris Lutzに同意します。あなたはそのような惨めな課題に助けを求める人生のどこにもいないでしょう。 –
'all:blah'はこれを単純化し、それが必要であり、' all'というファイルが実際に存在する場合にはそれを破ることもあります。この点を除いて、これは最良の答えです。 –
実際、さらに考えてみると、この単純なケースでは、 'all'というファイルはおそらく依存性チェックを破ることはないでしょう。いずれにしても、最初のターゲットをデフォルトのターゲットとして扱うため、makeはまだ冗長です。 –
あなたはGNUが作成し、あなたが余分なライブラリにリンクする必要がない場合は、実行している場合は、最も簡単なメイクファイルがまったくメイクファイルではありません。試してみてください:
make main
あなたは、あなたは、次の1行のMakefileを使用することができ、main
を指定する必要がしたくない場合は、次の
all: main
GNUあなたならばそれが使用するいくつかの暗黙のルールがあることを確認し自分で定義しないでください。詳細情報については
%: %.c
$(CC) $^ -o [email protected]
、以下を参照してください:この作品のようなものである可能1 http://www.gnu.org/software/make/manual/make.html#Using-Implicit
明らかに、出力は 'main'ではなく' blah'でなければならないので、Makefileが必要になります。上記はまだ有用な情報ですが、ここで実際には適用されません。 –
実行ファイルを 'blah'と呼ぶべき場合は、許可されていればソースファイルの名前を' blah.c'に変更するのが最も簡単です。 –
@ T.J.Crowder: 'blah'は要件ではなく、むしろ例です:OPは"私が* like * 'を実行できると言った。/ blah'"ですから、この1行の 'Makefile'はうまくいくようです – MestreLion
は私が推薦する最も簡単です:暗黙のルール経由
myprog: myprog.o
$(CC) -o [email protected] @^
、これはになりますそれをリンクする前にmyprog.c
をmyprog.o
にコンパイルする別のステップ。私は(アルノーによって)他の回答よりも、この方が好きな理由は、それが大幅にメイクファイルを拡大することなく、より多くのソースファイルにスケールということである。
myprog: myprog.o foo.o bar.o helper.o my.o your.o his.o her.o
$(CC) -o [email protected] @^
' @^'の代わりに' $^'でなければなりませんか? – user2023370
Janderは、あなたのソースがという名前の単一のファイルであれば、言ったようにblah.c
all: blah
あるいは:あなたは出力にblah
という名前の実行可能ファイルを、これを使用することができ、他の
blah:
すべてがありますこれは非常に簡単ですがGNU make
使用した場合、暗黙的な、それはより複雑な答えの一部の上にいくつかの利点を持っている:
- コンパイラがハードコードされていません:ご使用の環境があなたのため
gcc
を選択してみましょう! - あなたのプログラム名は一度しか設定されていません。良いDRYプログラミングの習慣です。
- この単純なプロジェクトでは不要な中間ファイル
*.o
を作成しません。言っ は
、私は強くあなたが少なくともclean
とall
ルールと-Wall
フラグを追加してMakefile
を向上させることが示唆されました。私たちを尋ねる前に、あなたの宿題をするためにいくつかの努力をしてください
TARGET=blah CFLAGS=-Wall .PHONY: all clean all: $(TARGET) $(TARGET): clean: rm -f $(TARGET)
- 1. このドロップダウンの最も単純なJQueryプラグインは何ですか?
- 2. C++の最も単純なRTTI実装は何ですか?
- 3. 最高の、最も単純なajaxファイルアップローダは何ですか?
- 4. これはカレンダーのための最も簡単で簡単なアルゴリズムですか?
- 5. Hibernateは単純なSELECTクエリが、ここで、私がセットアップこの単純なHibernateのクエリを得たが、それは何も返さないもの
- 6. は、単一タイプの宣言 - 私はこれを行うことができますC#では、単一のタイプ
- 7. Google App EngineのPythonで書くことができる最も単純なURL短縮アプリケーションは何ですか?
- 8. 単一の文字からエスケープする最も単純なアルゴリズムは何ですか?
- 9. は、私はこの単純なループを持つ第1のループエントリ
- 10. C#最も単純なトレースまたはログ
- 11. Zope 2をインストールするための最も簡単なbuildout.cfgは何ですか?
- 12. インターフェイスの派生型を変換する方法は?ここのために最も最も単純で
- 13. は、私はこの単純なコード持っているC
- 14. 単純なアプリケーション用のMakefile
- 15. 私はこのような単純なヒストグラム持つヒストグラム
- 16. 一見単純な私は
- 17. この単純なコードは何をしますか?
- 18. コンパイルとインタラクティブな実行サイクル(C++/makefile)のための最も効率的なemacsワークフローは何ですか?
- 19. pythonスクリプトがファイルを作成できるようにするための最も良い/最も簡単なApacheサーバー/フォルダ設定は何ですか?
- 20. 最も単純な機能と用途を持つ汎用データベースビューア
- 21. この単純なjqueryには何がありますか?
- 22. Javascriptが - 私は祝日と単純な配列持た値
- 23. vb.netのバックグラウンドワーカーを使用したマルチスレッドの最も単純な例は何ですか
- 24. VB6コントロール配列の最も単純な.NET同等物は何ですか?
- 25. が、私はまだ私の心で遊んで、この単純なクラス、作られたプライベートネストされたクラスに
- 26. C++で単一リンクリストを作成するためのいくつかのポインタ
- 27. は、MySQLは、私は単純に作成し5つの最新の行(ID)を吐き出すしたい
- 28. コマンドラインから作成して実行できる最も簡単な目的のCユニットテストは何ですか?
- 29. SQLサーバーデータベースをバックアップする単純なコマンドラインプログラムまたはスクリプトとは何ですか?
- 30. この単純な最適化の機械学習アルゴリズムは何ですか?
:これはまだ、すべての上記の利点を保ち、次
Makefile
で行うことができます。あなたの教授があなたにMakefileを使用してもらいたい理由があるので、より有用なプロジェクトのためにMakefileを書く方法を学ぶことができます。 –申し訳ありませんが、宿題の警察を動揺させることを意味しませんでした。私はそれをグーグルで試してみましたが、Makefileは明らかに信じられないほど強力で、非常に複雑です。私はそれの多くを理解するいくつかの問題を抱えていると認めています。このサブジェクトはプログラミング対象ではありませんが、CコードでネイティブOS関数を呼び出す必要があります。私は以前はCに触れていませんでしたが、この課題は数時間で完了します。私は不満を抱き、絶望的でしたし、何か助けが必要でした。ごめんなさい。 – Ash