Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125268
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-15 22:27
文章分类
文章存档

2018年(2)

2017年(37)

我的朋友

分类: LINUX

2017-09-07 09:18:21

    使用Makefile进行文件编译的时候,记得除了指定给源文件包含的头文件的路径外,还要将该头文件所需要的.cpp也包含进路径。
    

点击(此处)折叠或打开

  1. CROSS            =
  2. #编译器
  3. CC                =$(CROSS)g++
  4. #当前路径
  5. CURIENT_PATH    =$(shell pwd)
  6. #源文件目录名称
  7. SOURCE_DIR        =src
  8. #头文件目录名称
  9. HEAD_DIR        =include
  10. #源文件目录路径
  11. SOURCE_PATH        =$(CURIENT_PATH)/$(SOURCE_DIR)/
  12. #头文件目录路径
  13. HEAD_PATH        =$(CURIENT_PATH)/$(HEAD_DIR)/

  14. SRC                =$(wildcard $(SOURCE_PATH)*.cpp)
  15. OBJS             =$(patsubst %.cpp, %.o, $(SRC))

  16. #版本号
  17. VERSION         =_v1.0.0
  18. #生成可执行文件+版本号
  19. TARGET = Server$(VERSION)
  20. #安装路径
  21. INSTALL=

  22. #指定头文件路径,这里文件已经指定,是SOURCE_PATH,所以也就没用到
  23. #CFLAGS+=

  24. #链接库的名称
  25. LDFLAGS+=-pthread
  26. #pes_parent_dir:=$(shell pwd)/$(lastword $(MAKEFILE_LIST)) 将得到一个完整路径名.
  27. #pes_parent_dir:=$(shell dirname $(pes_parent_dir))    通过命令dirname 去掉 Makefile部分
  28. #pes_parent_dir:=$(shell dirname $(pes_parent_dir))    得到其父目录.

  29. all:$(TARGET)
  30.     @#这里的src/command.cpp必须加上,要不然test.cpp只能找到command.h,却无法找到相对应的源程序,无法与command.cpp一起编译
  31.     $(CC) -g test/test.cpp src/command.cpp -o test/test -I$(HEAD_PATH) $(LDFLAGS)

  32. $(TARGET):$(OBJS)
  33.     $(CC) $^ -g -o $@ $(LDFLAGS)
  34. $(OBJS):%.o:%.cpp
  35.     $(CC) -g -c $^ -o $@ -I$(HEAD_PATH) $(CFLAGS) $(LDFLAGS)
  36. clean:
  37.     rm -f $(OBJS) $(TARGET) test/test

阅读(10829) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~