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

質問編集履歴

4

文章を修正

2021/09/16 08:03

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -30,27 +30,26 @@
30
30
 
31
31
  ```makefile
32
32
  PRG :=AAEditor
33
- SRCDIR :=source
33
+ SRC_DIR :=source
34
- OBJDIR :=obj
34
+ OBJ_DIR :=obj
35
- DEPDIR :=obj
35
+ DEP_DIR :=obj
36
- DEP :=$(wildcard $(DEPDIR)/*.d)
36
+ DEP :=$(wildcard $(DEP_DIR)/*.d)
37
- SRC :=$(wildcard $(SRCDIR)/*.cpp)
37
+ SRC :=$(wildcard $(SRC_DIR)/*.cpp)
38
- OBJ :=$(addprefix $(OBJDIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
38
+ OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
39
39
 
40
- $(warning SRC = $(SRC));
40
+ #$(warning SRC = $(SRC)); #デバッグ
41
- $(warning OBJ = $(OBJ));
41
+ #$(warning OBJ = $(OBJ)); #デバッグ
42
42
 
43
43
 
44
44
  $(PRG): $(OBJ)
45
45
  $(CXX) $^ -l ncurses -o $@
46
46
 
47
- $(OBJDIR)/%.o: source/%.cpp
47
+ $(OBJ_DIR)/%.o: source/%.cpp
48
48
  $(CXX) -c -MMD -MP $^ -o $@
49
49
  -include $(DEP)
50
50
 
51
51
  clean:
52
- rm -f ./obj/*.o *.out ./obj/*.d *.a $(PRG)
52
+ rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)
53
-
54
53
  ```
55
54
 
56
55
 

3

文章を修正

2021/09/16 08:03

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -36,6 +36,11 @@
36
36
  DEP :=$(wildcard $(DEPDIR)/*.d)
37
37
  SRC :=$(wildcard $(SRCDIR)/*.cpp)
38
38
  OBJ :=$(addprefix $(OBJDIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
39
+
40
+ $(warning SRC = $(SRC));
41
+ $(warning OBJ = $(OBJ));
42
+
43
+
39
44
  $(PRG): $(OBJ)
40
45
  $(CXX) $^ -l ncurses -o $@
41
46
 
@@ -63,64 +68,36 @@
63
68
  これはフリーソフトウェアです: 自由に変更および配布できます.
64
69
  法律の許す限り、 無保証 です.
65
70
  makefile を読み込みます...
71
+ Makefile:11: SRC = source/Fps.cpp source/Color.cpp source/Scene.cpp source/Entry.cpp source/Main.cpp source/Screen.cpp source/Log.cpp source/Edit.cpp
72
+ Makefile:12: OBJ = obj/Fps.o obj/Color.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o
66
73
  makefile の更新中....
67
74
  最終ターゲットを更新中....
68
75
  ファイル 'AAEditor' が存在しません.
69
76
  ターゲット 'AAEditor' を再make する必要があります.
70
- g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
77
+ g++ obj/Fps.o obj/Color.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
71
- /usr/bin/ld: obj/Main.o: in function `main':
78
+ /usr/bin/ld: obj/Color.o: in function `InitColorPairs()':
72
- Main.cpp:(.text+0x62): undefined reference to `InitColorPairs()'
79
+ Color.cpp:(.text+0xdf): undefined reference to `GetColorNum(int, int)'
80
+ /usr/bin/ld: obj/Color.o: in function `SetColor(int, int)':
81
+ Color.cpp:(.text+0x140): undefined reference to `GetColorNum(int, int)'
82
+ /usr/bin/ld: obj/Color.o: in function `UnSetColor(int, int)':
83
+ Color.cpp:(.text+0x1af): undefined reference to `GetColorNum(int, int)'
73
84
  /usr/bin/ld: obj/Screen.o: in function `Screen::Screen()':
74
85
  Screen.cpp:(.text+0x1cc): undefined reference to `GetColorNum(int, int)'
75
86
  /usr/bin/ld: obj/Screen.o: in function `Screen::UpdateScreen()':
76
87
  Screen.cpp:(.text+0x331): undefined reference to `GetColorNum(int, int)'
77
- /usr/bin/ld: obj/Screen.o: in function `Screen::Delete(int, int)':
78
- Screen.cpp:(.text+0x47b): undefined reference to `GetColorNum(int, int)'
79
- /usr/bin/ld: obj/Edit.o: in function `Edit::KeyInput()':
80
- Edit.cpp:(.text+0x1bc): undefined reference to `GetColorNum(int, int)'
81
- /usr/bin/ld: obj/Edit.o: in function `Edit::MouseInput()':
82
- Edit.cpp:(.text+0x348): undefined reference to `GetColorNum(int, int)'
83
- /usr/bin/ld: obj/Edit.o:Edit.cpp:(.text+0x3f6): more undefined references to `GetColorNum(int, int)' follow
88
+ /usr/bin/ld: obj/Screen.o:Screen.cpp:(.text+0x47b): more undefined references to `GetColorNum(int, int)' follow
84
89
  collect2: error: ld returned 1 exit status
85
- make: *** [Makefile:9: AAEditor] エラー 1
90
+ make: *** [Makefile:16: AAEditor] エラー 1
86
91
 
87
- ```
88
92
 
89
- make clean 後再度実行
90
93
  ```
91
- $ make
92
- g++ -c -MMD -MP source/Fps.cpp -o obj/Fps.o
93
- g++ -c -MMD -MP source/Scene.cpp -o obj/Scene.o
94
- g++ -c -MMD -MP source/Entry.cpp -o obj/Entry.o
95
- g++ -c -MMD -MP source/Main.cpp -o obj/Main.o
96
- g++ -c -MMD -MP source/Screen.cpp -o obj/Screen.o
97
- g++ -c -MMD -MP source/Log.cpp -o obj/Log.o
98
- g++ -c -MMD -MP source/Edit.cpp -o obj/Edit.o
99
- g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
100
- /usr/bin/ld: obj/Main.o: in function `main':
101
- Main.cpp:(.text+0x62): undefined reference to `InitColorPairs()'
102
- /usr/bin/ld: obj/Screen.o: in function `Screen::Screen()':
103
- Screen.cpp:(.text+0x1cc): undefined reference to `GetColorNum(int, int)'
104
- /usr/bin/ld: obj/Screen.o: in function `Screen::UpdateScreen()':
105
- Screen.cpp:(.text+0x331): undefined reference to `GetColorNum(int, int)'
106
- /usr/bin/ld: obj/Screen.o: in function `Screen::Delete(int, int)':
107
- Screen.cpp:(.text+0x47b): undefined reference to `GetColorNum(int, int)'
108
- /usr/bin/ld: obj/Edit.o: in function `Edit::KeyInput()':
109
- Edit.cpp:(.text+0x1bc): undefined reference to `GetColorNum(int, int)'
110
- /usr/bin/ld: obj/Edit.o: in function `Edit::MouseInput()':
111
- Edit.cpp:(.text+0x348): undefined reference to `GetColorNum(int, int)'
112
- /usr/bin/ld: obj/Edit.o:Edit.cpp:(.text+0x3f6): more undefined references to `GetColorNum(int, int)' follow
113
- collect2: error: ld returned 1 exit status
114
- make: *** [Makefile:9: AAEditor] エラー 1
115
94
 
95
+ make clean 後再度実行 $(warning)関数を利用
116
96
  ```
117
- $(warning)関数を利用 ** **強調部に存在しています。
118
- ```
119
97
  $ make
120
- Makefile:11: SRC = source/Fps.cpp **source/Color.cpp** source/Scene.cpp source/Entry.cpp source/Main.cpp source/Screen.cpp source/Log.cpp source/Edit.cpp
98
+ Makefile:11: SRC = source/Fps.cpp source/Color.cpp source/Scene.cpp source/Entry.cpp source/Main.cpp source/Screen.cpp source/Log.cpp source/Edit.cpp
121
- Makefile:12: OBJ = obj/Fps.o **obj/Color.o** obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o
99
+ Makefile:12: OBJ = obj/Fps.o obj/Color.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o
122
100
  g++ obj/Fps.o obj/Color.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
123
-
124
101
  /usr/bin/ld: obj/Color.o: in function `InitColorPairs()':
125
102
  Color.cpp:(.text+0xdf): undefined reference to `GetColorNum(int, int)'
126
103
  /usr/bin/ld: obj/Color.o: in function `SetColor(int, int)':

2

文章を修正

2021/09/16 07:37

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,10 @@
1
1
  提示コードのmakefileですがsource/%.cppを使ってsourceディレクトリファイルを全部見ているのですが なぜColor.oだけg++のリンクコマンドに乗らないのでしょうか?ワイルドカードを使っているのでディレクトリ内全部がリンク対象のはずです。
2
2
 
3
3
 
4
+
5
+ 参考サイトA: [https://qiita.com/aosho235/items/8e90bf09795758cfb70b
6
+ ](https://qiita.com/aosho235/items/8e90bf09795758cfb70b)
7
+
4
8
  ```makefile
5
9
  g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
6
10
  ```
@@ -18,6 +22,12 @@
18
22
  ```
19
23
 
20
24
 
25
+
26
+
27
+
28
+
29
+
30
+
21
31
  ```makefile
22
32
  PRG :=AAEditor
23
33
  SRCDIR :=source
@@ -103,4 +113,26 @@
103
113
  collect2: error: ld returned 1 exit status
104
114
  make: *** [Makefile:9: AAEditor] エラー 1
105
115
 
116
+ ```
117
+ $(warning)関数を利用 ** **強調部に存在しています。
118
+ ```
119
+ $ make
120
+ Makefile:11: SRC = source/Fps.cpp **source/Color.cpp** source/Scene.cpp source/Entry.cpp source/Main.cpp source/Screen.cpp source/Log.cpp source/Edit.cpp
121
+ Makefile:12: OBJ = obj/Fps.o **obj/Color.o** obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o
122
+ g++ obj/Fps.o obj/Color.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
123
+
124
+ /usr/bin/ld: obj/Color.o: in function `InitColorPairs()':
125
+ Color.cpp:(.text+0xdf): undefined reference to `GetColorNum(int, int)'
126
+ /usr/bin/ld: obj/Color.o: in function `SetColor(int, int)':
127
+ Color.cpp:(.text+0x140): undefined reference to `GetColorNum(int, int)'
128
+ /usr/bin/ld: obj/Color.o: in function `UnSetColor(int, int)':
129
+ Color.cpp:(.text+0x1af): undefined reference to `GetColorNum(int, int)'
130
+ /usr/bin/ld: obj/Screen.o: in function `Screen::Screen()':
131
+ Screen.cpp:(.text+0x1cc): undefined reference to `GetColorNum(int, int)'
132
+ /usr/bin/ld: obj/Screen.o: in function `Screen::UpdateScreen()':
133
+ Screen.cpp:(.text+0x331): undefined reference to `GetColorNum(int, int)'
134
+ /usr/bin/ld: obj/Screen.o:Screen.cpp:(.text+0x47b): more undefined references to `GetColorNum(int, int)' follow
135
+ collect2: error: ld returned 1 exit status
136
+ make: *** [Makefile:16: AAEditor] エラー 1
137
+
106
138
  ```

1

文章を修正

2021/09/16 07:13

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- makefile 特定のソースファイルだけオブジェクトファイルが生成されない原因が知りたい
1
+ makefile 特定のオブジェクトファイルがg++ コマンドの行に乗らない生成されない原因が知りたい
body CHANGED
@@ -1,6 +1,9 @@
1
- 提示コードのmakefileですがsource/%.cppを使ってsourceディレクトリファイルを全部見ているのですが なぜColor.cppだけオブジェトファイルが生成されないのでしょうか?ワイルドカードを使っているのでディレクトリ内全部がパイル対象のはずです。
1
+ 提示コードのmakefileですがsource/%.cppを使ってsourceディレクトリファイルを全部見ているのですが なぜColor.oだけg++のリンコマンドに乗らないのでしょうか?ワイルドカードを使っているのでディレクトリ内全部が対象のはずです。
2
2
 
3
3
 
4
+ ```makefile
5
+ g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor
6
+ ```
4
7
 
5
8
 
6
9
  ```command