免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3227 | 回复: 9
打印 上一主题 下一主题

[C] 靠, 就不明白为什么了 [复制链接]

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-07 23:39 |只看该作者 |倒序浏览
相同的 Makefile, 相同的目录深度 一个能够 make, 一个捣蛋
  1. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ cp  Makefile ../../../Src/Chapter07/CubeMapped/Makefile
  2. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ git diff  Makefile ../../../Src/Chapter07/CubeMapped/Makefile
  3. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ cd -
  4. /home/zylthinking/code/SB5/Src/Chapter07/CubeMapped
  5. zylthinking@linux:~/code/SB5/Src/Chapter07/CubeMapped$ make
  6. g++    -c -o Cubemap.o Cubemap.cpp
  7. Cubemap.cpp:7:39: fatal error: GLTools.h: No such file or directory
  8. compilation terminated.
  9. make: *** [Cubemap.o] Error 1
  10. zylthinking@linux:~/code/SB5/Src/Chapter07/CubeMapped$ cd -
  11. /home/zylthinking/code/SB5/Linux/Chapter07/CubeMapped
  12. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ diff  Makefile ../../../Src/Chapter07/CubeMapped/Makefile
  13. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ make
  14. g++  -g -I/usr/include -I/usr/local/include -I/usr/include/GL -I../../../Src/GLTools/include/  -I../../../Src/GLTools/include/GL -o Cubemap -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L/usr/local/lib ../../../Src/Chapter07/CubeMapped/Cubemap.cpp ../../../Src/GLTools/src/glew.c ../../../Src/GLTools/src/GLTools.cpp ../../../Src/GLTools/src/GLBatch.cpp ../../../Src/GLTools/src/GLTriangleBatch.cpp ../../../Src/GLTools/src/GLShaderManager.cpp ../../../Src/GLTools/src/math3d.cpp -lX11 -lglut -lGL -lGLU -lm
  15. ../../../Src/GLTools/src/GLTools.cpp: In function ‘GLbyte* gltReadBMPBits(const char*, int*, int*)’:
  16. ../../../Src/GLTools/src/GLTools.cpp:1058:10: warning: converting ‘false’ to pointer type ‘GLbyte* {aka signed char*}’ [-Wconversion-null]
  17. ../../../Src/GLTools/src/GLTools.cpp:1070:10: warning: converting ‘false’ to pointer type ‘GLbyte* {aka signed char*}’ [-Wconversion-null]
  18. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$ cat Makefile
  19. MAIN = Cubemap
  20. SRCPATH = ../../../Src/Chapter07/CubeMapped/
  21. SHAREDPATH = ../../../Src/GLTools/src/
  22. SHAREDINCPATH = ../../../Src/GLTools/include/
  23. LIBDIRS = -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L/usr/local/lib
  24. INCDIRS = -I/usr/include -I/usr/local/include -I/usr/include/GL -I$(SHAREDINCPATH)  -I$(SHAREDINCPATH)GL

  25. CC = g++
  26. CFLAGS = $(COMPILERFLAGS) -g $(INCDIRS)
  27. LIBS = -lX11 -lglut -lGL -lGLU -lm

  28. prog : $(MAIN)

  29. $(MAIN).o : $(SRCPATH)$(MAIN).cpp
  30. glew.o    : $(SHAREDPATH)glew.c
  31. GLTools.o    : $(SHAREDPATH)GLTools.cpp
  32. GLBatch.o    : $(SHAREDPATH)GLBatch.cpp
  33. GLTriangleBatch.o    : $(SHAREDPATH)GLTriangleBatch.cpp
  34. GLShaderManager.o    : $(SHAREDPATH)GLShaderManager.cpp
  35. math3d.o    : $(SHAREDPATH)math3d.cpp

  36. $(MAIN) : $(MAIN).o glew.o
  37.         $(CC) $(CFLAGS) -o $(MAIN) $(LIBDIRS) $(SRCPATH)$(MAIN).cpp $(SHAREDPATH)glew.c $(SHAREDPATH)GLTools.cpp $(SHAREDPATH)GLBatch.cpp $(SHAREDPATH)GLTriangleBatch.cpp $(SHAREDPATH)GLShaderManager.cpp $(SHAREDPATH)math3d.cpp $(LIBS)

  38. clean:
  39.         rm -f *.o
  40. zylthinking@linux:~/code/SB5/Linux/Chapter07/CubeMapped$
复制代码

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
2 [报告]
发表于 2014-08-08 01:30 |只看该作者
你这不对吧?你都用了隐式规则了,那应该是用的是CXX和CXXFLAGS吧?你确定是CC和CFLAGS?明显是上面那个没带$(INCLUDE)。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
3 [报告]
发表于 2014-08-08 01:32 |只看该作者
还有就是,你依赖了好几个.o,但是最终没用啊

我猜是你第一个目录下面有一堆.o,所以依赖代码没执行,所以可以直接执行最后一个$(MAIN)的规则,直接编译,但是新的文件夹里面没有这些.o,因此就应用了上面的隐式规则,但是隐式规则用的是.o.cpp,用的CXX和CXXFLAGS,不是CC和CFLAGS,因此相当于你完全没传递任何参数,所以编译错误了。你检查一下是不是这样

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
4 [报告]
发表于 2014-08-08 13:26 |只看该作者
starwing83 发表于 2014-08-08 01:30
你这不对吧?你都用了隐式规则了,那应该是用的是CXX和CXXFLAGS吧?你确定是CC和CFLAGS?明显是上面那个没带 ...


这不是我的, 是那个 opengl 蓝宝书的作者的, 手工打造的 make file, 看都看不懂; 反正我就不理解为什么在一个文件夹下能编译, 另一个不行, 这两个好歹目录深度是相同的,  makefile 里面也只有 ../../ 这类向上引用的目录

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
5 [报告]
发表于 2014-08-08 13:27 |只看该作者
starwing83 发表于 2014-08-08 01:32
还有就是,你依赖了好几个.o,但是最终没用啊

我猜是你第一个目录下面有一堆.o,所以依赖代码没执行,所 ...


有可能, 回去瞄一眼

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
6 [报告]
发表于 2014-08-08 14:27 |只看该作者
你只需要把
  1. $(MAIN) : $(MAIN).o glew.o
复制代码
改成
  1. $(MAIN) : glew.o
复制代码
就可以了~

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
7 [报告]
发表于 2014-08-08 14:29 |只看该作者
其实我觉得你连glew的依赖都可以不要的= =因为反正编译的时候用的是.c = =
把$(MAIN).o和glew.o分别改成$(MAIN).cpp和glew.c更好一点

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
8 [报告]
发表于 2014-08-09 12:58 |只看该作者
用CMake啥的吧,表折磨自己了

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
9 [报告]
发表于 2014-08-09 14:49 |只看该作者
make* 的太老土了,都用scons的

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
10 [报告]
发表于 2014-08-12 21:09 |只看该作者
回复 9# bskay


    是,不过要看懂内核的构建系统,还不是得老老实实看 Makefile.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP