GNU makefile文件

背景:做项目时候用的是android框见下的makefile文件,当时想在ubuntu下自己的cpp文件使用make好用吗?

结果一查,发现GNU自带makefile,语法和android有些差异,估计是android封装了,下面是使用GNU makefile例子,感觉和shell好像.

多路经多文件的没有试,在提供的链接中有相应的案例.

例子1

#linux makefile
CC = g++
SOURCE = operxml.cpp \
    XmlHelperOther.cpp \
    XmlOperator.cpp \
    XmlHelper.cpp


LFLAGS = -g
MODULE = -o OperatorXml
INCLUDE_PATH = -I /usr/include/libxml2/   #包含所用到的库的路径
LDFILELSP = -lxml2  #所用到的库的名字
OperatorXml:
${CC} ${MODULE} ${SOURCE} ${INCLUDE_PATH} ${LDFILELSP} ${LFLAGS}
clean:
rm OperatorXml

找到所在目录:

使用make OperatorXml即可编译出可执行文件


#关于GNU make,如下连接讲的很详细

http://blog.csdn.net/ruglcc/article/details/7814546

例子2

#linux makefile

CC = g++
SOURCE = main.cpp \
    NMConnectManager.cpp \


LFLAGS = -g
MODULE = -o connectmanager
connectmanager:
${CC} ${MODULE} ${SOURCE} ${LFLAGS}


.PHONY : clean
clean:
-rm connectmanager

找到cpp文件所在目录:

使用make connectmanager即可编译出可执行文件

#在编译时,使用make -s connectmanager则不会输出编译信息,使用make -B connectmanager则会强制编译,不需要make clean
也可以判断下,是否存在该文件,如果有,则rm掉
linux配置程序时,经常需要设置配置文件。程序更新时,配置文件不需要替换,只有第一次部署时才拷贝。
脚本如下:
file =  /etc/1.conf


ifeq ($(file), $(wildcard $(file)))
@echo  1.conf exist
else
cp 1.conf $(etc_dir)
endif

#更多了解GNU makefile,编译多个C文件.参考链接:http://blog.csdn.net/ruglcc/article/details/7814546


例子3

foo = $(bar)
bar = $(ugh)
ugh = Huh?
whoami = $(shell whoami)


all:
echo $(foo) #echo $(foo)前面加上@时,则make all时,不会输出变量名字
echo $(whoami)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值