关键字:
include xxx.mk
CXX = g++
CXXFLAGS = -std=c++11 -fPIC -shared -I../ -O3.................
LDFLAGS = -L../ ...........
LDLIBS = -labc (全名:libadc.so) ddeeff.a ....... (默认先找动态库,静态最好把路径和名称写全?)
LIBNAME = libxxx.so (我想要的)
$(MAKE) -C xxx (到xxx目录下执行make,多个目录顺序编译如下:)
SUBDIRS = aaa bbb ccc
all :
$(MAKE) subdirs
subdirs: $(SUBDIRS)
.PHONY: $(SUBDIRS)
$(SUBDIRS) :
$(MAKE) -C $@
make depend (一种makefile的规则,通过扫描仪个目录下的所有CC++ 代码,从而判断出文件之间的依赖关系,如a.cc文件中调用了b.h(如以形势include<b.h>),如果之后a.cc文件被改动,那么只需要重新编译a.cc文件,不需要编译b.h文件。否则所有的文件都需要重新编译)
depend:
-$(CXX) -M $(CXXFLAGS) *.cpp > .depend.mk
-include .depend.mk
$^ (冒号后的所有对象)
-for x in $(SUBDIRS); do $(MAKE) -C $$x clean; done
-Wl,--no-undefined 未定义报错
-Wl,--whole-archive $(LDLIBS) -Wl,--no-whole-archive
-Wl,--rpath,/aaa,/bbb,/ccc -Wl,-rpath=/ddd 动态库路径加上这个,避免可执行程序报找不到库的错误。