makefile笔记

The built in rules use a set of standard variables that allow you to specify local environment information (like where to find the ROOT include files) without re-writing all the rules. The ones most likely to be interesting to us are:

  • CC -- the c compiler to use
  • CXX -- the c++ compiler to use
  • LD -- the linker to use
  • CFLAGS -- compilation flag for c source files
  • CXXFLAGS -- compilation flags for c++ source files
  • CPPFLAGS -- flags for the c-preprocessor (typically include file paths and symbols defined on the command line), used by c and c++
  • LDFLAGS -- linker flags
  • LDLIBS -- libraries to link
CPPFLAGS、CFLAGS 和 CXXFLAGS的区别
CPPFLAGS会传递给预编译、编译、汇编和连接环节,一般宏定义以及包含路径可以放里面,而 CFLAGS 只传递给c和c++的编译器,CXXFLAGS只传递给c++的编译器


LDFLAGS 和 LDLIBS的区别
LDFLAGS是告诉链接器从哪里寻找库文件已经连接的一些选项,而LIBS是告诉链接器要链接哪些库文件


$<    表示所有的依赖目标集(一般是.c之类的)
$@  表示目标集(一般是.o之类的)

“@”字符在命令行前,那么,这个命令将不被make显示出来,只显示其执行结果

执行命令    如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。比如你的第一条命令是cd命令,你希望第二条命令得在cd之后的基础上运行,那么你就不能把这两条命令写在两行上,而应该把这两条命令写在一行上,用分号分隔

exec:

cd /home/hchen; pwd


“-”   在命令前加上“-”表示忽略错误;还有一个全局的办法是,给make加上“-i”或是“--ignore-errors”参数,那么,Makefile中所有命令都会忽略错误


变量定义"="和“:=”的区别:  "="的右值可以使用后面定义的变量,但容易形成无穷递归;":=" 只能使用之前定义好的变量值


调用其他makefile   先cd到目录,然后 && make如下

SUBDIR = ./test2
MAKE 
= make
subsystem:
        cd $(SUBDIR) 
&& $(MAKE)



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值