"); //-->
这里推荐一本书,Makefile手册,本人正在学习,多交流~
一、统一编译所有子目录的文件
直接上Makefile内容了,
AR=ar
LD=ld
CC=gcc
CFLAGS = -O2 -Wall -I./Test \
-I./Test/Test1 \
#注:"\"后面不能有空格,并且该句写完后最好有个换行
#注释部分推荐在单独的一行编写
#动态库需要 -fPIC -shared
SOFLAGS = -O2 -fPIC -shared
TARGET = ./libSDK.so
#这里递归遍历3级子目录
DIRS := $(shell find . -maxdepth 3 -type d)
#这里循环遍历目录的cpp文件
FILES = $(foreach dir,$(DIRS),$(wildcard $(dir)/*.cpp))
#定义宏
DEF = -DLINUX -DENABLE_EPOLL
#替换文件后缀 ,也可以写成 OBJS = $(FILES:%.cpp=%.o)
OBJS = $(patsubst %.cpp,%.o, $(FILES))
# Search paths
VPATH =
.cpp.o:
$(CC) -c $(CFLAGS) $(DEF) -D__cplusplus $< -o $@
.c.o:
$(CC) -c $(CFLAGS) $< -o $@
LIBS = -lpthread -lm -lstdc++
$(TARGET):$(OBJS)
$(CXX) $(SOFLAGS) -o $@ $(OBJS) $(LIBS)
# $(OBJS):%.o:%.cpp
# $(CXX) $(LINKFLAGS) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
# $(CXX) $(CXXFLAGS) -c -o $@ $<
clean:
$(RM) $(TARGET)
$(RM) $(OBJS)
二、按目录编译
参考:http://wdtxslqnn.blog.163.com/blog/static/4424648520132220651511/
要对子目录执行make,需要在当前目录制作一个Makefile,遍历所有子目录的Makefile,并运行相应的make target. 以下是我用来编译内核模块的一个Makefile
#
# Reference http://www.gnu.org/software/make/manual/make.html
#
# 需要排除的目录
exclude_dirs := include bin
# 取得当年子目录深度为1的所有目录名称
dirs := $(shell find . -maxdepth 1 -type d)
dirs := $(basename $(patsubst ./%,%,$(dirs)))
dirs := $(filter-out $(exclude_dirs),$(dirs))
# 避免clean子目录操作同名,加上_clean_前缀
SUBDIRS := $(dirs)
clean_dirs := $(addprefix _clean_,$(SUBDIRS) )
#
.PHONY: subdirs $(SUBDIRS) clean
# 执行默认make target
$(SUBDIRS):
$(MAKE) -C $@
subdirs: $(SUBDIRS)
# 执行clean
$(clean_dirs):
$(MAKE) -C $(patsubst _clean_%,%,$@) clean
clean: $(clean_dirs)
@find . /
/( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' /
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' /
-o -name '*.symtypes' /) /
-type f -print | xargs rm -f
三、编译错误多的情况
当我们执行make之后,发现出现的错误和警告信息较多,无法从头开始查看,这里提供一种shell的重定向输出到文件的方法
make 2> make_print.txt
数字 含义 标准叫法
0 标准输入 stdin = standard input
1 标准输出 stdout = standard output
2 标准错误输出 stderr = standard error
这样终端就看不到错误输出,而错误输出都会保存在make_print.txt中
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
d&b audiotechnik 与 L-Acoustics 携手 SoundPLAN 推出 SDE(系统设计交换平台)
IGBT与MOSFET:数据对比选型以助力优化电子设计
借助EWN‑8258FAT1BA实现性能最大化
为项目选择合适的稳压电源模块:实用指南
两个CW200输出电压叠加的集成稳压电源
EEPW06特刊——电源PDF版
[求助]请问高手:有没有现成的基于MCBSP接口的数据采集卡?
高输入电压集成稳压电源电路之四(CW200)
电源管理IC必备采购指南:优化成本并提升性能
模拟电子技术 第七讲
两个BG602输出电压叠加的集成稳压电源
[原创]班门弄斧之移植心得
IRF540 功率MOSFET实际应用:案例研究与深度解析
模拟电子技术 第四讲
EEPW 2003年精选实用电子设计100例
垫高零电位的高输出电压集成稳压电源(CW200)
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
EEPW06特刊——测试测量PDF版
模拟电子技术 第六讲
EEPW06特刊——模拟IC PDF版
Xthings:Z-Wave长距离技术赋能AIoT智能锁
垫高零电位的高输出电压集成稳压电源(BG602)
数字媒体处理器DM270
模拟电子技术 第五讲
笑死移动,气死联通
关于UCOS移植中的spsr
模拟电子技术 第八讲
电力电子的未来:2026 MOSFET晶体管趋势与技术创新
花钱买不到的好书——中华优秀传统文化与管理
面向项目的微控制器选型实用指南