makefile模板

1.简单的makefile模板

#############################################################
# Target files.
#############################################################
TARGET                := 

#############################################################
# Compiler tool
#############################################################
AS                    := g++
LD                    := g++
CC                    := g++
AR                    := ar
OD                     := objdump
OBJCOPY             := objcopy
RM                    := rm -rf

############################################################
# Flags.
#############################################################
CCFLAGS                := -c -Wall
LDFLAGS                := -lpthread 

#############################################################
# Collect source file.
#############################################################
#Collect all the *.c/*.cpp files.
CS_SRC                 := $(wildcard ./src/*.cpp)

#############################################################
# Produce object name.(Do not modify)
#############################################################
CS_OBJ                 := $(patsubst %.cpp,%.o,$(CS_SRC))

#############################################################
# Make target.
#############################################################
.PHONY:all
all: $(TARGET)

$(TARGET): $(CS_OBJ)
    $(LD) $(CS_OBJ) $(LDFLAGS) -o [email protected]

%.o: %.cpp
    $(CC) $(CCFLAGS) $< -o [email protected]

.PHONY:clean
clean:
    $(RM) $(CS_OBJ) $(DEP_FILES) $(TARGET)

2.解释

(1)$(patsubst <pattern>,<replacement>,<text>)
  功能:查找<text>中的单词(单词以“空格”、“ Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。例如:

  $(patsubst %.c,%.o,x.c.c bar.c)

  结果:x.c.o bar.o
  可以使用另一种模式:$(var: <suffix>=<replacement>)
  例如:objects = x.c.c bar.c 
  $(objects:.c=.o)
  结果:x.c.o bar.o

(2)静态模式

  <targets ...>: <target-pattern>: <prereq-patterns ...>
    <commands>
     ...
  targets 定义了一系列的目标文件,可以有通配符。是目标的一个集合。
  target-parrtern 是指明了 targets 的模式,也就是的目标集模式。
  prereq-parrterns 是目标的依赖模式,它对 target-parrtern 形成的模式再进行
一次依赖目标的定义。
  例如:

  $(objects): %.o: %.c
    $(CC) -c $(CFLAGS) $< -o [email protected]

  如果我们的<target-parrtern>定义成“ %.o”,意思是我们的<target>集合中都是以“ .o”结尾
的,而如果我们的<prereq-parrterns>定义成“ %.c”,意思是对<target-parrtern>
所形成的目标集进行二次定义,其计算方法是,取<target-parrtern>模式中的“ %”(也
就是去掉了[.o]这个结尾),并为其加上[.c]这个结尾,形成的新集合。
参考《跟我一起写makefile》

时间: 2024-10-11 00:20:45

makefile模板的相关文章

linux下面简单通用的Makefile模板

简单通用的Makefile模板: ############################################## # # 单目录通用Makefile # 目标文件可自己的设定 # 始须调试程序,修改 CFLAGS 变量为-Wall -g # # wuyq 20140825 ############################################## # EXECUTABLE为目标的可执行文件名, 可以根据具体的情况对其进行修改. EXECUTABLE := spi

makefile编写---.c .cpp 混合编译makefile 模板

# c.cpp混合编译的makefile模板 # # BIN = client_system BASE_INSTALL_DIR := /opt/arm-2009q1 BUILD_TOOL_DIR := $(BASE_INSTALL_DIR) BUILD_TOOL_PREFIX := $(BUILD_TOOL_DIR)/bin/arm-none-linux-gnueabi- CC = $(BUILD_TOOL_PREFIX)gccCPP = $(BUILD_TOOL_PREFIX)g++ INCS

Vim编程下自创Makefile模板

前言 一直都对Linux和Vim情有独钟,其实windows也很不错,因为工作上难免有些情况只能使用windows进行开发,包括有些API或者SDK都只有windows版本,只是用Linux的时候就感觉和计算机特别亲近的感觉,哈哈哈,夸张而言. 至于Vim(这里暂且不讨论vim和emacs谁更好的问题,这个是哲学问题),对比起大多数人估计都习惯使用IDE进行编程,使用vim确实难度会大很多,所以,如果不是专业的开发人员,其实也没有必要使用vim编程,不过有时候想,如果当年大学的编程课教的不是使用

万能makefile模板

这里一份万能makefile模板,写opencv项目时候使用的. 前提是提前配置好 包管理工具 pkg 然后就不用每次都去 -lopencv_xxx了. ###################################### # ###################################### #source file #源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件 SOURCE := $(wildcard *.c) $(wildcard *.cpp) OB

我所使用的一个通用的Makefile模板

话不多说,请看: 我的项目有的目录结构有: dirls/ ├── include │   └── apue.h ├── lib │   ├── error.c │   ├── error.o │   └── Makefile ├── src │   ├── dirls.c │   ├── dirls.out │   └── Makefile └── test_client 而我的Makefile模板代码如下: SRCS = $(wildcard *.c ../lib/*.c) #wildcard

一个简单的makefile模板

在Linux下编译工程,makefile是必不可少的工具,下面记录一个简单的makefile模板. 多个文件目录下的makefile写法推荐参考博文:http://www.cnblogs.com/Anker/p/3242207.html DIR_SRC = ./ DIR_BIN = ../bin PROGRAMNAME = program TARGET = ${DIR_BIN}/${PROGRAMNAME} SRC = $(wildcard ${DIR_SRC}/*.cpp) CC = g++

linux: 几个常用makefile模板

不才,总结个人常用makefile模板,以备后用. 1.编译动态库 [plain] view plain copy ############################################################# # Makefile for shared library. # 编译动态链接库 ############################################################# #set your own environment o

Linux工程下所有C代码编译Makefile模板

如何快速的开发简易C程序,首先需要一个Makefile模板. 简易Makefile特性 这个模板需要具备以下特性: ==>快速编译所有C代码 ==>能够快速打包源代码 ==>语言简洁易懂,便于后续的模块化操作 这里提供一个这样的模板供大家参考使用,如有改进方法和建议,也请不吝赐教,以便完善,谢谢! 简易Makefile模板 废话不说,使用<Linux下C/C++版本发布自动脚本>集成DEMO的三个文件进行简单的示例(version.c/main.c/version.h). M

kbuild的makefile模板

Makefile模板如下: #编译hello.o的时候加上预定义DEBUG_TEST CFLAGS_hello.o += -DDEBUG_TEST #编译所有的时候加上预定义MY_DEBUG EXTRA_CFLAGS += -DMY_DEBUG #指定最终生成的目标 #如果只有单个文件可以写成"obj-m := hello.o" obj-m += hello.o #指定生成hello.o文件需要哪些模块(如果只有单个文件可以删除下面这一行), #如果hello.o需要多文件构成则可以写