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

質問編集履歴

7

文章を修正

2021/11/07 08:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -21,6 +21,7 @@
21
21
  ```
22
22
 
23
23
  参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
24
+ 参考サイト2: [https://www.yokoweb.net/dokuwiki/programing/c-language/gcc-programing/gcc-library-link-order](https://www.yokoweb.net/dokuwiki/programing/c-language/gcc-programing/gcc-library-link-order)
24
25
 
25
26
 
26
27
  ##### Makefile

6

文章を修正

2021/11/07 08:23

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Makefile 静的ライブラリをリンクして参照する方法が知りたい。
1
+ Makefile 静的ライブラリをリンクすると定義されていませんと表示される原因が知りたい。
body CHANGED
@@ -43,20 +43,18 @@
43
43
  FRAMEWORK_OBJ :=$(addprefix $(FRAMEWORK_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
44
44
  GAME_OBJ :=$(addprefix $(GAME_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
45
45
 
46
- OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
47
-
48
-
49
46
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
50
47
  GAME_DEP :=$(wildcard $(GAME_DEP_DIR)/*.d)
51
48
 
52
49
 
53
50
  $(PRG): $(GAME_OBJ)
54
- ar rcs $(STATIC_LIB) $(FRAMEWORK_OBJ)
55
- $(CXX) -lrt $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
51
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
56
52
 
57
- #$(STATIC_LIB): $(FRAMEWORK_OBJ)
58
53
 
54
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
55
+ ar rc $@ $^
59
56
 
57
+
60
58
  $(FRAMEWORK_OBJ_DIR)/%.o: FrameWork/source/%.cpp
61
59
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
62
60
  -include $(FRAMEWORK_DEP)

5

文章を修正

2021/11/07 07:32

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Makefile 静的ライブラリをリンクしてにの定義されていませんと表示される原因が知りたい。
1
+ Makefile 静的ライブラリをリンクして参照す方法が知りたい。
body CHANGED
@@ -1,4 +1,4 @@
1
- 提示コードですがFrameWorkとGame二つのプロジェクトがありその内のFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトでリンクして使いたいのですが以下のエラー出ます。これはなぜでしょうか?
1
+ 提示コードですがFrameWorkとGame二つのプロジェクトがありその内のFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトでリンクして使いたいのですが以下のエラー出ます。これはなぜでしょうか? どうやってライブラリを参照するのでしょうか?
2
2
 
3
3
  ##### 環境
4
4
  CentOS GUI

4

文章を修正

2021/11/07 06:36

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Makefile .aファ出力してリンクしてビルドす方法が知りたい。
1
+ Makefile 静的ラブラリをリンクしてにの定義されていませんと表示される原因が知りたい。
body CHANGED
File without changes

3

文章を修正

2021/11/07 06:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,24 +10,19 @@
10
10
  ##### 端末
11
11
  ```
12
12
  $ make
13
- make: *** 'TopViewAction' に必要なターゲット 'Game/obj/Scene.o' make するルールがありません. 中止.
13
+ ar rcs FrameWork.a FrameWork/obj/Render.o FrameWork/obj/Shape.o FrameWork/obj/Sprite.o FrameWork/obj/Transform.o FrameWork/obj/Camera.o FrameWork/obj/Init.o FrameWork/obj/Resource.o FrameWork/obj/Text.o FrameWork/obj/Shader.o FrameWork/obj/Model.o FrameWork/obj/Simple.o FrameWork/obj/Help.o FrameWork/obj/Window.o
14
+ g++ -lrt Game/obj/Scene.o Game/obj/Entry.o Game/obj/Game.o Game/obj/Camera.o Game/obj/Main.o Game/obj/LightCube.o Game/obj/Player.o Game/obj/Actor.o Game/obj/Ground.o -o TopViewAction -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -lFrameWork.a
15
+ Game/obj/Camera.o: 関数 `Camera::Update()' 内:
16
+ Camera.cpp:(.text+0x11b): `FrameWork::Camera::setLook(glm::vec<3, float, (glm::qualifier)0>)' に対する定義されていない参照です
17
+ Camera.cpp:(.text+0x136): `FrameWork::Camera::setPosition(glm::vec<3, float, (glm::qualifier)0>)' に対する定義されていない参照です
18
+ Game/obj/Main.o: 関数 `main' 内:
19
+ Main.cpp:(.text+0x49): `FrameWork::Init(glm::vec<2, int, (glm::qualifier)0>, glm::vec<2, int, (glm::qualifier)0>, char const*)' に対する定義されていない参照です
20
+
14
21
  ```
15
22
 
16
-
17
-
18
-
19
-
20
23
  参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
21
- ##### 該当コード
22
- ```
23
- $(PRG): $(GAME_OBJ)
24
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
25
24
 
26
- $(STATIC_LIB): $(FRAMEWORK_OBJ)
27
- ar rcs $^ $@
28
25
 
29
- ```
30
-
31
26
  ##### Makefile
32
27
  ```
33
28
  PRG :=TopViewAction
@@ -54,20 +49,20 @@
54
49
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
55
50
  GAME_DEP :=$(wildcard $(GAME_DEP_DIR)/*.d)
56
51
 
52
+
57
53
  $(PRG): $(GAME_OBJ)
54
+ ar rcs $(STATIC_LIB) $(FRAMEWORK_OBJ)
58
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
55
+ $(CXX) -lrt $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
59
56
 
60
- $(STATIC_LIB): $(FRAMEWORK_OBJ)
57
+ #$(STATIC_LIB): $(FRAMEWORK_OBJ)
61
- ar rcs $^ $@
62
58
 
63
59
 
64
-
65
60
  $(FRAMEWORK_OBJ_DIR)/%.o: FrameWork/source/%.cpp
66
61
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
67
62
  -include $(FRAMEWORK_DEP)
68
63
 
69
64
 
70
- $(Game_OBJ_DIR)/%.o: Game/source/%.cpp
65
+ $(GAME_OBJ_DIR)/%.o: Game/source/%.cpp
71
66
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
72
67
  -include $(GAME_DEP)
73
68
 

2

文章を修正

2021/11/07 06:16

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Makefile 二つプロジェクトてビルドする方法が知りたい。片方は .aファイルを出力したい。
1
+ Makefile .aファイル出力しリンクしてビルドする方法が知りたい。
body CHANGED
@@ -1,12 +1,37 @@
1
- Makefileで二つのプロジェクトGame,FrameWorkがあですが二つのプロジェクトを分てビルドしたいのですが場合はどうやってMakefileを記述すればいいのでしょうか?またFrameWorkプロジェクトの方は.aライブラリを生成したいです。
1
+ 提示コードすがFrameWorkとGame二つのプロジェクトがありそFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトでリンクて使いたいのですが以下エラー出ま。こはなぜでしょうか?
2
2
 
3
- 参考サイト: [https://www.fixes.pub/program/194511.html](https://www.fixes.pub/program/194511.html)
3
+ ##### 環境
4
+ CentOS GUI
4
5
 
5
6
 
6
7
 
8
+
9
+
10
+ ##### 端末
11
+ ```
12
+ $ make
13
+ make: *** 'TopViewAction' に必要なターゲット 'Game/obj/Scene.o' を make するルールがありません. 中止.
14
+ ```
15
+
16
+
17
+
18
+
19
+
20
+ 参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
21
+ ##### 該当コード
22
+ ```
23
+ $(PRG): $(GAME_OBJ)
24
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
25
+
26
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
27
+ ar rcs $^ $@
28
+
29
+ ```
30
+
7
31
  ##### Makefile
8
32
  ```
9
- PRG :=GL
33
+ PRG :=TopViewAction
34
+ STATIC_LIB :=FrameWork.a
10
35
  FRAMEWORK_SRC_DIR :=FrameWork/source/
11
36
  GAME_SRC_DIR :=Game/source/
12
37
  FRAMEWORK_OBJ_DIR :=FrameWork/obj
@@ -23,26 +48,31 @@
23
48
  FRAMEWORK_OBJ :=$(addprefix $(FRAMEWORK_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
24
49
  GAME_OBJ :=$(addprefix $(GAME_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
25
50
 
26
- #OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
51
+ OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
27
- OBJ :=$(FRAMEWORK_OBJ)
28
52
 
53
+
29
54
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
30
55
  GAME_DEP :=$(wildcard $(GAME_DEP_DIR)/*.d)
31
56
 
32
- $(PRG): $(OBJ)
57
+ $(PRG): $(GAME_OBJ)
33
- #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
58
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
34
- ar rcs test.a $(OBJ)
35
59
 
60
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
61
+ ar rcs $^ $@
62
+
63
+
64
+
36
65
  $(FRAMEWORK_OBJ_DIR)/%.o: FrameWork/source/%.cpp
37
66
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
38
67
  -include $(FRAMEWORK_DEP)
39
68
 
69
+
40
70
  $(Game_OBJ_DIR)/%.o: Game/source/%.cpp
41
71
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
42
72
  -include $(GAME_DEP)
43
73
 
44
74
  clean:
45
- rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(PRG)
75
+ rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(STATIC_LIB)
46
76
  rm -f ./$(GAME_OBJ_DIR)/*.o *.out ./$(GAME_OBJ_DIR)/*.d *.a $(PRG)
47
77
 
48
78
 

1

文章を修正

2021/11/07 05:56

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Makefile 静的ライブラリ作成する方法が知りたい。
1
+ Makefile 二つプロジェクト分てビルドする方法が知りたい。片方は .aファイルを出力したい。
body CHANGED
@@ -1,82 +1,49 @@
1
- Makefileで二つのプロジェクトGame,FrameWorkがあるのですがFramWorkのプロジェクトを静的ライブラリにしそれをGameプロジェクトで使いたいのですがどうやって静的ライブラリ作成できるのでしょうか?参考サイト通りコマンドを入れが下記ー出ます。
1
+ Makefileで二つのプロジェクトGame,FrameWorkがあるのですが二つのプロジェクトをビルドしたいのですがその場合はどうやってMakefile記述すればいいのでしょうか?またFrameWorkプロジェクト方は.aイブラリを生成したいです。
2
2
 
3
+ 参考サイト: [https://www.fixes.pub/program/194511.html](https://www.fixes.pub/program/194511.html)
3
4
 
4
- #####知りたいこと
5
- Makefileで静的ライブラリを作る方法
6
5
 
7
6
 
8
-
9
- #####端末
7
+ ##### Makefile
10
8
  ```
11
- $ make
12
- ar rcs obj/Render.o obj/Shape.o obj/Sprite.o obj/Transform.o obj/Camera.o obj/Init.o obj/Resource.o obj/Text.o obj/Shader.o obj/Model.o obj/Simple.o obj/Help.o obj/Window.o -o FrameWork -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
13
- ar: 二つの異なった操作オプションが指定されました
14
- make: *** [Makefile:12: FrameWork] エラー 1
15
-
16
- ```
17
-
18
- 参考サイト:[ https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/developer_guide/creating-libraries-gcc](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/developer_guide/creating-libraries-gcc)
19
-
20
- ##### FrameWork Makefile
21
- ```
22
- PRG :=FrameWork
23
- SRC_DIR :=source
24
- OBJ_DIR :=obj
25
- DEP_DIR :=obj
26
- DEP :=$(wildcard $(DEP_DIR)/*.d)
27
- SRC :=$(wildcard $(SRC_DIR)/*.cpp)
28
- OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
29
-
30
-
31
- $(PRG): $(OBJ)
32
- #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
33
- ar rcs $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
34
-
35
-
36
- $(OBJ_DIR)/%.o: source/%.cpp
37
- $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
38
- -include $(DEP)
39
-
40
-
41
- clean:
42
- rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)
43
-
44
- ```
45
-
46
- #####Game,FrameWork二つのプロジェクトをビルドするMakefile
47
- ```
48
9
  PRG :=GL
49
10
  FRAMEWORK_SRC_DIR :=FrameWork/source/
50
11
  GAME_SRC_DIR :=Game/source/
12
+ FRAMEWORK_OBJ_DIR :=FrameWork/obj
51
- OBJ_DIR :=obj
13
+ GAME_OBJ_DIR :=Game/obj
52
14
 
53
- FRAMEWORK_DEP_DIR :=obj
15
+ FRAMEWORK_DEP_DIR :=$(FRAMEWORK_OBJ_DIR)
54
- GAME_DEP_DIR :=obj
16
+ GAME_DEP_DIR :=$(GAME_OBJ_DIR)
55
17
 
56
18
 
57
19
  FRAMEWORK_SRC :=$(wildcard $(FRAMEWORK_SRC_DIR)/*.cpp)
58
20
  GAME_SRC :=$(wildcard $(GAME_SRC_DIR)/*.cpp)
59
21
 
60
22
 
61
- FRAMEWORK_OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
23
+ FRAMEWORK_OBJ :=$(addprefix $(FRAMEWORK_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
62
- GAME_OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
24
+ GAME_OBJ :=$(addprefix $(GAME_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
63
25
 
64
- OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
26
+ #OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
27
+ OBJ :=$(FRAMEWORK_OBJ)
28
+
65
29
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
66
30
  GAME_DEP :=$(wildcard $(GAME_DEP_DIR)/*.d)
67
31
 
68
32
  $(PRG): $(OBJ)
69
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
33
+ #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
34
+ ar rcs test.a $(OBJ)
70
35
 
71
- $(OBJ_DIR)/%.o: FrameWork/source/%.cpp
36
+ $(FRAMEWORK_OBJ_DIR)/%.o: FrameWork/source/%.cpp
72
- $(CXX) ar rc -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
37
+ $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
73
38
  -include $(FRAMEWORK_DEP)
74
39
 
75
- $(OBJ_DIR)/%.o: Game/source/%.cpp
40
+ $(Game_OBJ_DIR)/%.o: Game/source/%.cpp
76
41
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
77
42
  -include $(GAME_DEP)
78
43
 
79
44
  clean:
45
+ rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(PRG)
80
- rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)
46
+ rm -f ./$(GAME_OBJ_DIR)/*.o *.out ./$(GAME_OBJ_DIR)/*.d *.a $(PRG)
81
47
 
48
+
82
49
  ```