teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

ALLターゲットのあたりの問題についての記述を追加した。

2020/09/26 00:31

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  提示されているMakefileは、.oファイルがあるのが前提の書き方になっていますがcleanした後など.oファイルがないは状態では正しく動作しません。.oが存在しない状態で「*.o」や「%.o」としても.oファイルのリストは得たり、マッチングさせたりは出来ません。
4
4
  .oのリストである$(OBJ)は.現在存在するcppファイルのリスト$(SRC)を取得してそこからから得るようにする必要があります。
5
+ また実行モジュールを作る規則のターゲットの指定(ALL)は$(TARGET)となるべきだと思います。意図通りに.oが流用されないというのはこれのことを言ってるのかもしれないと思いました。
6
+ デフォルトターゲットALLは慣習的には小文字のallとすることが多いと思うのでそのように修正しました。
5
7
  runターゲットの意図や.hppの扱いが不明だったのですがとりあえずそのままにしてあります。
6
8
  実行されるコマンドの確認のためにコマンド前の「@」は外してあります。
7
9
  GNU Make 4.1で動作確認しています。

1

実行結果の整形忘れを修正した。

2020/09/26 00:31

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -57,7 +57,7 @@
57
57
  実行モジュールを削除してからビルド
58
58
  ```terminal
59
59
  $ rm ABC
60
- hidezzz@h2a2:/tmp/hoge1$ls -l `find . -type f`
60
+ $ ls -l `find . -type f`
61
61
  -rw-rw-r-- 1 hidezzz hidezzz 341 9月 26 08:13 ./Makefile
62
62
  -rw-rw-r-- 1 hidezzz hidezzz 1232 9月 26 08:20 ./hoge.o
63
63
  -rw-rw-r-- 1 hidezzz hidezzz 5696 9月 26 08:20 ./main.o