一个比较通用的Makefile

TARGET = xxx

SRCDIRS = .
SRCEXTS := .c .cpp
SRC = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
OBJ = $(foreach x,$(SRCEXTS), $(patsubst %$(x),%.o,$(filter %$(x),$(SRC))))

CFLAGS += -Wall -g \
            -I../libjson/include/ \
            -I../mylib \

CPPFLAGS += $(CFLAGS)
CXXFLAGS += $(CFLAGS)

LDLIBS += -lm \
        ../libjson/lib/$(CROSS)/libjson.a \
        ../netzip_build/lib/libz.a

$(TARGET): $(OBJ)
    $(CXX) -o $(TARGET) $(OBJ)  $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)   $(LDLIBS)

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

%.o: %.cpp
    $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]

%.d: %.c
    @set -e; rm -f [email protected]; \
    $(CC) -MM $(CFLAGS) $< > [email protected]$$$$; \
    sed ‘s,\($*\)\.o[ :]*,\1.o [email protected] : ,g‘ < [email protected]$$$$ > [email protected]; \
    rm -f [email protected]$$$$

%.d: %.cpp
    @set -e; rm -f [email protected]; \
    $(CXX) -MM $(CPPFLAGS) $< > [email protected]$$$$; \
    sed ‘s,\($*\)\.o[ :]*,\1.o [email protected] : ,g‘ < [email protected]$$$$ > [email protected]; \
    rm -f [email protected]$$$$

include $(OBJ:.o=.d)

install:
    cp $(TARGET) /srv/nfs

clean:
    rm -f $(TARGET)
    rm -f $(OBJ)

时间: 2024-11-08 06:26:08

一个比较通用的Makefile的相关文章

一步一步写一个简单通用的makefile(三)

上一篇一步一步写一个简单通用的makefile(二) 里面的makefile 实现对通用的代码进行编译,这一章我将会对上一次的makefile 进行进一步的优化. 优化后的makefile: #Hellomake #Magnum, 2014-10-20 # 指令编译器和选项 CC=gcc CFLAGS=-Wall # 需要链接库的库名,比如libm.a,就是-lm,需要去掉前面的lib和后面的.a LIBS=-lm # 设置默认搜索头文件的路径,优先是这个,然后是系统路径 IncludeDir

写一个驱动通用的Makefile

1.Makefile模板 #generate the pathCURRENT_PATH:=$(shell pwd) #the absolute pathLINUX_KERNEL_PATH:=/home/steven/PCU/linux-2.6.35.3 #complie objectall: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modulesclean: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_P

Linux C编程学习4---多文件项目管理、Makefile、一个通用的Makefile

GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性. 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相应的更新.如果通过手动去完成这个工作的话,对于小型的项目可能还行,但是对于比较大型的项目就几乎是不可能的. 因此Linux 系统提供了一个自动维护和生成目标程序的工具 make,它可以根据各个模块的更改情况去重新编译连接目标代码 Make 工具的作用就是实现编译连接过程的自动化.它定义了一种语言,用

一个通用的Makefile (转)

据http://bbs.chinaunix.net/thread-2300778-1-1.html的讨论,发现还是有很多人在问通用Makefile的问题,这里做一个总结.也作为以后的参考. 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应用程序则所有的Makefile都要重写一遍,虽然可以部分的粘帖复制,但还是感觉应该找到更好的解决途径:另外当一个应用程序中包含多个文件夹时通常要在每个目录下创建一个Makefile,当有数十个文件夹时,要创建如此多的Makefi

一个通用的Makefile

一 makefile的作用 Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中记录有文件的信 息,在make时会决定在链接的时候需要重新编译哪些文件.Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件.当那些依赖文件有了改变,编译器会自动发现最终的生成文件已经过时,而应该重新编译相应的模块. makefile带来的好处就是—"自动化编译",一旦写好,只需要

编写一个通用的Makefile文件

1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe 1.2体验在VC下程序的编译 a.先编译,在链接 b.修改了哪个文件,就单独编译此文件,在链接 c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接 1.3在linux下实现上述要求 2.编写一个测试的Makefile 2.1直接编译链接 1 gcc -o test a.c b.c 缺点:改变其中一

Ubuntu下比较通用的makefile实例

本文转自http://blog.chinaunix.net/uid-20608849-id-360294.html 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应用程序则所有的Makefile都要重写一遍,虽然可以部分的粘帖复制,但还是感觉应该找到更好的解决途径:另外当一个应用程序中包含多个文件夹时通常要在每个目录下创建一个Makefile,当有数十个文件夹时,要创建如此多的Makefile也是不胜其烦.那么为什么不用automake呢,诚然,对于一个很大的工

linux下面简单通用的Makefile模板

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

一个简单通用权限管理系统,求各位帮忙看看

最近为公司做一个能源行业的管理平台系统,既然系统定位为平台,自然需要插件化.高通用性等,当前正在进行权限部分的设计,由于本人最近一直忙于开发.设计工作,手中没有一个比较通用的权限管理系统,所以打算顺便借此机会设计一套,我对权限系统没有什么研究,看了一天园子里的相关文章,初步做了个数据库设计,希望各路大神帮忙看看,下面附上数据表结构图,献丑了... 一个简单通用权限管理系统,求各位帮忙看看,布布扣,bubuko.com