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

回答編集履歴

1

追記1

2019/11/18 07:44

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -13,4 +13,64 @@
13
13
  make INCLUDE_PATHS=-I./src/dir
14
14
  ```
15
15
 
16
- として動かすとかですね。
16
+ として動かすとかですね。
17
+
18
+ ---------------
19
+
20
+ [追記1]
21
+
22
+ 私は最近cygwin上でmakefileを使い始めました。
23
+ (それまではWindowsコマンドプロンプト上でバッチファイルから...)
24
+
25
+ なので詳しいことはわかりませんが、
26
+
27
+ 方法1: 上記で挙げた方法を「シェルスクリプトを介して」コンパイルする
28
+
29
+ 例えば、
30
+ ```ここに言語を入力
31
+ make INCLUDE_PATHS=-I./src/dir
32
+ ```
33
+ とシェルスクリプト( まあ、バッチファイルでもいいけど... ) に書いて、これを介してコンパイルする。
34
+
35
+ 方法2: 直接makefileに書き込む
36
+
37
+ ```ここに言語を入力
38
+ /*project_dir*/
39
+ CC = gcc
40
+
41
+ # このへんにCFLAGSなり、独自のINCLUDEパスなりを追加する
42
+
43
+ TARGET = http_object
44
+
45
+ SRC_DIR = ./src/main
46
+
47
+ INCLUDE_PATHS :=
48
+
49
+ include ./src/Makefile
50
+
51
+ $(TARGET):
52
+ $(CC) $(INCLUDE_PATHS) $(SRC_DIR)/main.c $< -o $@
53
+ ```
54
+
55
+ 方法3: makefileを介して別のmakefileを呼び出す
56
+
57
+ この方法はやったことありませんが、[参考資料](http://objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/gnu-make/rule.html)の「タスク」の項目みたいに、
58
+
59
+ ```ここに言語を入力
60
+ # ファイル名 = comile.make
61
+ compile:
62
+ make CFLAGS=-I./src
63
+ ```
64
+
65
+ としておいて、
66
+
67
+ ```ここに言語を入力
68
+ make -f compile.make
69
+ ```
70
+
71
+ とするとか。
72
+ (うまくいくかどうかわかりませんが...)
73
+
74
+ あと、インクルードに関しては INCLUDE( いや、CFLAGSの方か? )っていう、デフォルトで用意されている変数?があるようです。
75
+ 参考: [リンク1](http://urin.github.io/posts/2013/simple-makefile-for-clang)
76
+ 参考: [リンク2](https://stackoverflow.com/questions/341387/adding-a-directory-for-the-headers-in-a-makefile)