Makefile 编写技巧

22 篇文章 0 订阅
8 篇文章 0 订阅

Makefile 编写技巧  

自动遍历目录下的cpp文件和hpp文件,不用每次都加

SRC_PATH := src src/Common src/XXXX

APP_SRCS = $(foreach dir, $(SRC_PATH), $(wildcard $(dir)/*.c $(dir)/*.cpp))


APP_SUB_INCLUDES := logic/include logic/XXXX


include ../../XXXX/Makefile.mk
 

 

CFLAGS += -D _YUQIANG 增加编译宏

 

find ./src -maxdepth 8 -type d  ! -path "*unittest*" ! -path "*demo*" ! -path "*cloudshadow*" ! -path "*watchdog*" 查找./src 目录下的文件目录 除了 unittest 等等

 

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld
上面这句表示在编译hello.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include
-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib
 -lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)

 

-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib

它用于解决几个库之间的循环依赖(在 – (和 – )之间列出)。

 

-( archives -) or --start-group archives --end-group

The archives should be a list of archive files. They may be either explicit file names, or -l options.

The specified archives are searched repeatedly until no new undefined references are created. Normally, an archive is searched only once in the order that it is specified on the command line. If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line, the linker would not be able to resolve that reference. By grouping the archives, they all be searched repeatedly until all possible references are resolved.

Using this option has a significant performance cost. It is best to use it only when there are unavoidable circular references between two or more archives.

因此,组内的库可以多次搜索新的符号,并且您不需要像-llib1 -llib2 -llib1这样的丑陋的构造

PS归档意味着基本上是一个静态库(* .a文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值