编译及Makefile

添加编译的宏开关https://www.cnblogs.com/zht-blog/p/4036935.html

理解 Android Build 系统架构https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/

Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

https://blog.csdn.net/liurunjiang/article/details/77249012

4.多个目标编译

https://blog.csdn.net/yychuyu/article/details/79951051

5.头文件及其他写法

https://blog.csdn.net/xukai871105/article/details/36476793

5.示例:

#target you can change test to what you want
NAME_1 = client
NAME_2 = server
TARGET  := $(NAME_1) $(NAME_2)

#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
# SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
SOURCE_COMMON = src/logout.c \
				hello.c
SOURCE_1 := tst_client.c \
			hello.c \
			$(SOURCE_COMMON)
SOURCE_2 := tst_server.c \
			hello.c \
			$(SOURCE_COMMON)

OBJS_1   := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE_1)))
OBJS_2   := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE_2)))

#compile and lib parameter
#编译参数
CC      := gcc
LIBS    := $(shell pkg-config --libs glib-2.0 gobject-2.0 gtk+-2.0)
LDFLAGS :=
DEFINES := -g -Wall -O3
INCLUDE :=
CFLAGS  := $(shell pkg-config --cflags glib-2.0 gobject-2.0 gtk+-2.0)
CXXFLAGS:= $(CFLAGS) $(DEFINES) -DHAVE_CONFIG_H


#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild

all : $(TARGET)
$(NAME_1) : $(OBJS_1)
	$(CC) $(CXXFLAGS) -o $@ $(OBJS_1) $(LDFLAGS) $(INCLUDE) $(LIBS)
$(NAME_2) : $(OBJS_2)
	$(CC) $(CXXFLAGS) -o $@ $(OBJS_2) $(LDFLAGS) $(INCLUDE) $(LIBS)

objs : $(OBJS_1) $(OBJS_2)

everything : $(TARGET)

rebuild: veryclean everything
SUBDIR = $(shell ls ./ -R | grep /)
SUBDIRS = $(subst :,/,$(SUBDIR))
RMSOURCE = $(foreach dir, $(SUBDIRS),$(wildcard $(dir)*.o))

clean :
	rm -fr *.so
	rm -fr $(RMSOURCE)
	rm -fr $(TARGET)

veryclean : clean
	# rm -fr $(TARGET)

%.o:%.c
	$(CC) $(CFLAGS) $(INCLUDE) -o $@ -c $<

# $(TARGET) : $(OBJS)
# 	$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(INCLUDE) $(LIBS)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值