Makefile

关键字:

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            动态库路径加上这个,避免可执行程序报找不到库的错误。

原文地址:https://www.cnblogs.com/bingdongwuchi/p/6649677.html