LifeホームサイトについてプログラミングWeb/ブログゲーム開発環境サービス/製品その他ホームその他makeコマンドスポンサーリンクその他2016.11.27Windows生まれ、Windows育ち。VisualStudioはだいたい友達。そんなUnixに触れる機会が少ないまま育った私は、makeをしてこなかったんです。そんなわけで、改めてmakeです。複数ファイルの依存関係があるビルドを(簡単に)する更新があるファイルに限定してコンパイル・ビルドすると思っています。Hoge.hがある状況を考えていきます。main.cppにmain関数があり、そこからHoge.*に宣言・定義されたHogeクラスを利用するという形。これをビルドする最低限の書き方のMakefileは以下です。main.oこれが最低限の書き方です。これでmakeを実行すればmainという実行ファイルができます。上で書いた形は、makeの暗黙のルールが適用されることで動いています。そもそもhoge.oやmain.oなどというファイルは存在しないのに、そういった記述でビルドが成功しました。本来のmakeの構文は以下です。...コマンド1コマンド2注意としては、コマンドの前はスペースではなくタブを記述する必要があります。上で適用された暗黙のルールとは、コマンドを暗黙(デフォルト)のものを使用.oを出力するファイルは.cppであるものとして処理というもの。コマンドや、.cppと.oの依存関係をきちんと省略せずに書いたMakefileが以下です。main.cppこれを実行しても同じ結果が得られます。makeの慣習makeコマンドでは以下の様なオプションが慣例的に使われます。cleanとすればファイルが削除されるというものです。これを実現するにはmakeファイルに続けて以下を記述すればよいです。mainつまり、オプションでターゲット名を指定すればそのターゲットのコマンドが実行されるんですね。allがビルドですが、通常はオプション無しでもallと同じくビルドが走って欲しいです。オプション無しで走るのは最初に記述してあるコマンドになるので、以下のように記述するのが通例です。mainmakeのマクロ変数Makefileでは、任意のマクロと呼ぶ変数を定義できます。PROJ_DIR=/proj/pathなど。デフォルトで設定済みのマクロもあります。代表的なものとしては以下となります。main.cpp出力は以下となります。main.oHogeは暗黙のルールでCXXのマクロのコマンドが使われています。これgccだとコケるかと思ったんですが、通りました。macなので中身はclangだからかもしれません。以上簡単にmakeのテストとまとめでした。コメントをキャンセルメールアドレスが公開されることはありません。(1)お問い合わせタイトルとURLをコピーしました。