makefile 嵌套
目录结构:

dynamic 和 static 两个目录实现加法功能, 分别生成动态库和静态库, main.c 主文件链接加法功能, 终端命令执行: make dynamic=1 则编译动态库进行链接 , make 静态库编译
动态库的makefile内容:
# CROSS_COMPILE :=
# CC := $(CROSS_COMPILE)gcc
# CPP := $(CROSS_COMPILE)g++ TARGET := libadd.so
OBJ := sub.o
SRCS = $(wildcard *.c) all:
$(CC) -c -o $(OBJ) -fPIC $(SRCS)
$(CC) -shared -fPIC -o $(TARGET) $(OBJ) .PHONY : clean
clean:
rm $(OBJ) $(TARGET) -f
静态库makefile内容:
# CROSS_COMPILE :=
# CC := $(CROSS_COMPILE)gcc
# CPP := $(CROSS_COMPILE)g++
# AR := $(CROSS_COMPILE)ar TARGET := libadd.a
OBJ := sub.o
SRCS = $(wildcard *.c) all:
$(CC) -c -o $(OBJ) $(SRCS)
$(AR) -rcs -o $(TARGET) $(OBJ) .PHONY : clean
clean:
rm $(OBJ) $(TARGET) -f
根目录的makefile内容:
CROSS_COMPILE :=
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)AR
CPP = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
NM = $(CROSS_COMILE)nm STRIP = $(CROSS_COMPILE)strip
OBJDUMP = $(CROSS_COMPILE)objdump
OBJCOPY = $(CROSS_COMPILE)objcopy ifndef dynamic
LIBPATH := static
else
LIBPATH := dynamic
endif CFLAGS := -Wall -O2 -g
CFLAGS += -I $(shell pwd)/$(LIBPATH) LDFLAGS := -lm -L$(LIBPATH) -ladd TOPDIR := $(shell pwd) SRCS = $(wildcard *.c) TARGET := main
OBJ := main.o all:$(TARGET)
# $(TARGET): 这种方式不会自动推导调用 %.o:%.c 这个内容
$(TARGET):$(OBJ)
make -C $(LIBPATH)
$(CC) $(OBJ) $(CFLAGS) $(LDFLAGS) -o $(TARGET)
# 这样放会出现找不到链接库的问题,源文件要放在链接库前面
# $(CC) $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(SRCS) %.o:%.c
$(CC) -c $(CFLAGS) $^ -o $@ # .PHONY是一个伪目标,可以防止在Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突
.PHONY : clean
clean:
make -C $(LIBPATH) clean
rm $(OBJ) $(TARGET) -f
源码下载路径: https://download.csdn.net/download/aba13579/10777167
参考链接: https://blog.csdn.net/qq_21792169/article/details/50448639
makefile 嵌套的更多相关文章
- makefile学习笔记(多目录嵌套调用、变量使用)
http://blog.csdn.net/leexiang_han/article/details/9274229 学习了几天的makefile的嵌套调用编写也有一些心得,先声明,我也是初学者写文 ...
- Makefile (3) 基本语法和使用
make是用来管理一个工程项目的工具 . Makefile就是这个项目文件 . 1.Makefile 是由若干条规则组成的,每个规则的语法如下所示 : #规则 targets: prerequisit ...
- makefile--参数传递、条件判断、include (五)
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile.比如我们在顶 ...
- 嵌入式linux第一阶段笔记
1.虚拟网络编辑器(vm):三种模式:(VMnet0)桥接模式(vm和windows公用同个网络(同个物理端口)),(VMnet1)仅主机模式,(VMnet8)NAT模式(vm连接一个虚拟的路由(WA ...
- makefile详解 嵌套执行make,定义命令包
嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而 ...
- 从头開始写项目Makefile(五):嵌套运行
[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在大一些的项目里面,全部源码不会仅仅放在同一个文件夹,一般各个功 ...
- Makefile之嵌套执行make
1.在Makefile中 一般使用一个总控Makefile来指明文件的编译规则 如: subsystem: cd subdir && $(MAKE) 其等价于 subsystem: $ ...
- 怎么写makefile?(转)
跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 pr ...
- 【转】Linux makefile 教程 非常详细,且易懂
From: http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C ...
随机推荐
- Luogu P5283 [十二省联考2019]异或粽子
感觉不是很难的一题,想了0.5h左右(思路歪了,不过想了一个大常数的两只\(\log\)做法233) 然后码+调了1h,除了一个SB的数组开小外基本上也没什么坑点 先讲一个先想到的方法,我们对于这种问 ...
- Wonder 1.0正式版发布-----WebGL 3D引擎和编辑器
介绍 我们很荣幸地向大家发布Wonder 1.0正式版!免费.开源,不用注册,直接打开在线编辑器即可使用! Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态 ...
- ABP之多租户
“软件多租户”指的是一种软件架构,一个软件实例在一个服务器上运行,但为多个租户服务.租户们对软件实例有通用的访问入口,但是每个租户都有特定的权限. 在多租户体系架构中,用程序旨在为每个租户提供一个专用 ...
- 如何下载西门子产品CAD、3D和EPLAN文件
使用CAx下载管理器可以访问产品的最新CAD和CAE数据. 介绍 技术数据中包含一系列产品的尺寸图.可使用CAx下载管理器,如果需要更多信息. 可以在西门子全球支持数据库中快速方便地找到 3D,CAx ...
- Linux下Nginx配置阿里云 SSL证书实现HTTPS访问
这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...
- 【tool】部署前端工具
一.部署前端工具如下: nodejsnpmwebpackvue 二.安装nodejs 1. 下载稳当版本nodejs 2. 配置环境变量 NODE_HOME=D:\soft\nodejs\ path= ...
- [Java]list集合为空或为null的区别
判断的是list这个集合的问题,当前需要判断list内值的问题. 简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null, ...
- hdu-4612(无向图缩点+树的直径)
题意:给你n个点和m条边的无向图,问你如果多加一条边的话,那么这个图最少的桥是什么 解题思路:无向图缩点和树的直径,用并查集缩点: #include<iostream> #include& ...
- Nginx HTTP框架提供的其它变量
L74
- ArrayDataProvider数据分页
模型 public function search($page=10){ $lists = self::find()->orderBy('id DESC')->all(); $dataPr ...