Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)

时间:2023-03-09 09:12:10
Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)

开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处。

QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样

========================================================

automake和autoconf 生成大型项目的makefile编写
http://blog.****.net/fuli1215/article/details/6399175 使用GNU Autoconf/Automake创建Makefile
http://blog.****.net/exbob/article/details/6998430

Makefile.am

bin_PROGRAMS = bterminal sample_nmea

bterminal_SOURCES = bterminal.c ble_serial.c
bterminal_LDADD=../libs/libnmea.a sample_nmea_SOURCES = sample_nmea.c
sample_nmea_LDADD=../libs/libnmea.a INCLUDES= -I../include AM_CFLAGS = @bterminal_CFLAGS@
AM_LDFLAGS = @bterminal_LIBS@ CLEANFILES = *~

linux编程一定要会写makefile,否则工程不能织成网,每个文件只能单兵作战

红色标记部分需要认真理解

CC = gcc 

#CC=arm-poky-linux-gnueabi-gcc --sysroot=/home/summer/test-yocto/qemuarm
#LD=arm-poky-linux-gnueabi-ld --sysroot=/home/summer/test-yocto/qemuarm
#CFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
#CXXFLAGS=-O2 -pipe -g -feliminate-unused-debug-types BIN = lib/libgpsserial.a
MODULES = gpsserial
SAMPLES = gpsreader OBJ = $(MODULES:%=build/gpsserial_gcc/%.o)
LINKOBJ = $(OBJ) $(RES) SMPLS = $(SAMPLES:%=samples_%)
SMPLOBJ = $(SAMPLES:%=samples/%/main.o) INCS = -I include
LIBS = -lm -Llib -lgpsserial -Llibs -lnmea .PHONY: all all-before all-after clean clean-custom doc all: all-before $(BIN) samples all-after all-before:
mkdir -p build/gpsserial_gcc clean: clean-custom
rm -f $(LINKOBJ) $(BIN) $(SMPLOBJ) $(SMPLS) doc:
$(MAKE) -C doc remake: clean all $(BIN): $(LINKOBJ)
ar rsc $@ $^
ranlib $@ build/gpsserial_gcc/%.o: src/%.c
$(CC) $(INCS) -c $< -o $@ samples: $(SMPLS) samples_%: samples/%/main.o
$(CC) $< $(LIBS) -o build/$@ -lm samples/%/main.o: samples/%/main.c
$(CC) $(INCS) -c $< -o $@