自动编译当前目录下所有文件的Makefile

下面是我在一个项目中使用的Makefile.

脚本会自动搜索当前目录下所有子目录,并依据目录下的.c 和 .cxx生成对应的.o,最后生成应用application,

代码中删除了项目相关配置,如CFLAGS,LDFLAGS,CXXFLAGS中的gcc配置

欢迎转载,烦请添加链接,谢谢!

 1 SHELL=/bin/sh
 2
 3 CC = $(CROSS_COMPILE)gcc
 4 CXX = $(CROSS_COMPILE)g++
 5 LD = $(CROSS_COMPILE)ld
 6
 7 CFLAGS +=
 8
 9 LDFLAGS +=-L.
10
11 MAKE_DIR=$(PWD)
12
13 CFLAGS += $(INCLS)
14 CXXFLAGS += $(INCLS)
15 #find all the sub-directory
16 VPATH=$(foreach dir,$(shell find . -type d),$(shell echo $(dir):))
17 #include all the sub-directory
18 INCLS=$(foreach dir,$(subst :, ,$(VPATH)),$(shell echo -I$(dir)))
19 #find all .c and produce .o
20 C_SRC_PATH = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.c))
21 COBJS = $(subst .c,.o,$(C_SRC_PATH))
22 #find all .cxx and produce .o
23 CPP_SRC_PATH = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.cxx))
24 CPPOBJS = $(subst .cxx,.o,$(CPP_SRC_PATH))
25
26 execobjs = $(COBJS) $(CPPOBJS)
27 #the scripts for compile
28 .PHONY: all
29
30 all: $(execobjs)
31     $(CXX) -o application $(execobjs) $(LDFLAGS)
32
33 $(COBJS):%.o:%.c
34     $(CC) -c $< -o [email protected] $(CFLAGS)
35
36 $(CPPOBJS):%.o:%.cc
37     $(CC) -c $< -o [email protected] $(CXXFLAGS)
38 #the scripts for clean
39 .PHONY: clean
40
41 clean:
42     rm application $(execobjs)
时间: 2024-11-08 00:51:09

自动编译当前目录下所有文件的Makefile的相关文章

Linux命令--ls命令:显示当前目录下的文件

3.2 ls命令:显示当前目录下的文件 ls 是最常见的目录操作命令,主要作用是显示目录下的内容.这个命令的基本信息如下: 命令名称:ls.英文原意:list.所在路径:/bin/ls.执行权限:所有用户.功能描述:显示目录下的内容. 对命令的基本信息进行说明:英文原意有助于理解和记忆命令:执行权限是命令只能被超级用户执行,还是可以被所有用户执行:功能描述指的是这个命令的基本作用. 本节主要讲解基本命令,基本信息有助于大家记忆,本章所有命令都会加入命令的基本信息.在后续章节中,大家要学会通过帮助

du命令的使用-----查看当前目录下的文件信息

du命令的使用-----查看当前目录下的文件信息 1.du 参数: (1)  du -a  (2) du -s (3) du -k (4) du -m (5)du -g (6) du -l (7) du -r (8) du -x (9) du -H (10)du -L 注意: du -某参数 后面可以添加文件名字,表示查看指定文件的信息,如果不写,默认是当前目录下所有文件信息. (1)  du -a :为每个指定文件显示使用磁盘的情况.或为每个目录显示使用磁盘的情况.注意 该参数与 du -s的

xcode自动刷新resource下的文件

修改resource下的lua或者ccbi文件时,xcode并不会察觉到,所以需要手动清理xcode缓存和模拟器缓存,开发效率比较低下. 通过以下步骤可以实现自动刷新resource下的文件,且无需手动清理缓存或者clean. 适用于xcode-5.0.2 1.选中xcode项目 2.选择build phase 3. 添加run script 4. 在run script下添加如下命令() find ${SRCROOT}/../../RisingClient/Resources/scripts

vs code开发python时找不到当前目录下的文件、UnicodeDecodeError: &#39;gbk&#39;

一.vs code开发python时找不到当前目录下的文件, file = open("readme.txt")一直报错,找不到目录下面的文件 原来vscode 默认都是以打开的项目的目录为当前目录,如果项目下面的文件夹里面的的文件运行就会出错.找不到文件 解决问题: vscode [文件]->[首选项]->[设置]搜索[terminal] 1.在设置中搜索teminal,选择用户→python2.勾选Execute In File Dir 二.open文件时,报错,Uni

搜索当前目录下所有文件包含某关键词的文本/文件名/行号

工作中希望通过命令能够找到nginx的一堆conf文件中配置某个域名的conf的文件名:或者找读书笔记里面包含某个关键词的所有读书笔记markdown文档: 或者找到某个公司/作者/演员/tag的所有作品的文章,如果你像我一样,记性很烂,但只是记得某个关键词就想要找到以前的东西,那么看这篇就对了. 这篇文章基于Unix/Linux/MacOS环境,当然windows如果安装bash命令行也是可以的.通过find命令查找当前目录下所有带有某个字符串的文件名以及行号.或者上下文. 通过find命令查

dos指令 获取当前目录下所有文件命令解析

dir *.* /b >fileName.txt 其中: *.* 表示所有文件 包括文件夹 /b >fileName.txt 表示输入的文件名称 注意: 可以做个批处理文件 然后双击运行下看看效果就知道了~ 获取当前目录下的所有文件包括文件夹的dos指令 效果: ajax_jsonajax_json.zipfileName.batfileName.txtjava编码规范.docjd-gui.exe.lnknewzip.lnkOCJP_题库详解.docoracle.txt.lnkoracle解锁

#### 批处理命令 获取当前目录下所有文件的路径

@echo off & setlocal EnableDelayedExpansion for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do ( set file=%%~fi set file=!file:/=/! echo !file! >> 路径.txt ) 将 "获取当前目录文件列表.cmd"拷贝到想要获取的目录下,然后双击即可,会在当前目录下生成"路径.txt&

查看LINUX当前目录下的文件夹大小

File参数实际上是一个目录,就要报告该目录内的所有文件.如果没有提供 File参数,du命令使用当前目录内的文件. 如果File参数是一个目录,那么报告的块的数量就是分配到目录中文件以及分配到目录自身的块之和. 指定-a标志,报告个体文件中块数量.不管是否使用了-a标志,由File参数指定的个体文件总是要列出. 指定-s标志,报告用于所有指定文件和目录中所有文件的全部块. 块计数包括每个文件的间接块.块计数是通过 512 字节单位计算的,它与系统使用的群集大小无关.指定-k标志,通过 1024

linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息

zhuazai:https://blog.csdn.net/sty945/article/details/79830915 前言 ls命令 ls -a ls -l ll du命令 du -s du -s * du -s * | sort -nr 我的DIY_Bash 在linux任意位置都可以使用这个目录下的脚本 注意 前言 最近几乎大部分工作都在linux上进行的,发现在工作过程中经常要查看当前目录下的文件大小,但是每次都是用ls命令每次都是以字节形式显示的,看起来特别不爽.于是开始了再lin