论坛首页 编程语言技术论坛

向大家推荐一个C/C++通用Makefile

浏览 41478 次
精华帖 (6) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-10-11  
cppeye
0 请登录后投票
   发表时间:2011-01-05  
mr_kairy 写道
lpn520 写道
JavaEye的C/C++论坛这么冷清吗

Javaeye 为什么以 java开头呢..呵呵 ...
都探讨Java  技术的  关于 C  C++ 方面   现在做这块的人 并不是很多

原谅你的无知!
0 请登录后投票
   发表时间:2011-01-05  
thinkx 写道
scons绝对是构建c/c++程序的利器。
基本上写一个就可以不加改动的到处使用了。
scons主要是声明式的,比起make那种使用要简单的多。


最近在看scons。。确实很强大。。做了一个简单的 脚本就可以编译 用swig生成的dll了。

而且写扩展相对比较容易..

makefile 我改的多。自己写的少,
0 请登录后投票
   发表时间:2011-03-25   最后修改:2011-03-25
我也来贴下自己的Makefile
支持C和CPP
.PHONY: clean all

FILETYPE = c
# what language is used: c  or  cpp
TARGETS = program
#target name
TREE = 0
# whether the source files are organised in tree or not
# (source files are divided into 'inc' 'src' 'lib' directories):
# 0 not; 1 yes

ifeq ($(strip $(FILETYPE)), c)
CC = gcc
else
CC = g++
endif

MKDIR = mkdir
RM = rm
RMFLAGS = -rf
CFLAGS = -Wall -W -g 
LDLIBS = 
# libraries to link to ,default not

DIR = $(shell pwd)

ifeq ($(strip $(TREE)), 0)
SRC_DIR = $(DIR)
LIB_DIR = $(DIR)
INC_DIR = $(DIR)
else
SRC_DIR = $(DIR)/src
LIB_DIR = $(DIR)/lib
INC_DIR = $(DIR)/inc
endif

DEPS_DIR = $(DIR)/.deps
OBJ_DIR = $(DIR)/.obj
DIRS = $(DEPS_DIR) $(OBJ_DIR) 
RMS = $(DIRS)

INCLUDE = -I$(INC_DIR)
SRCS = $(wildcard $(SRC_DIR)/*.$(FILETYPE))
OBJS = $(patsubst $(SRC_DIR)/%.$(FILETYPE), $(OBJ_DIR)/%.o, $(SRCS))
DEPS = $(patsubst $(OBJ_DIR)/%.o, $(DEPS_DIR)/%.dep, $(OBJS))
RMS += $(TARGETS) $(OBJS)


all: $(TARGETS) $(DEPS)

ifneq ($(MAKECMDGOALS), clean)
-include $(DEPS)
endif

$(DIRS):
	$(MKDIR) $(DIRS)
	
$(TARGETS):$(OBJS)
	$(CC) $(INCLUDE) -L$(LIB_DIR) -o $@ $(filter %.o, $^) $(LDLIBS)

$(OBJ_DIR)/%.o:$(OBJ_DIR) $(SRC_DIR)/%.$(FILETYPE)
	$(CC) -o $@ -c $(filter %.$(FILETYPE), $^) $(CFLAGS) $(INCLUDE) 

$(DEPS_DIR)/%.dep:$(SRC_DIR)/%.$(FILETYPE) $(DEPS_DIR) 
	$(CC) -MM $(INCLUDE) $(CFLAGS) $< | sed -e 's,^\(.*\.o\),$(OBJ_DIR)/\1,' > $@


clean:
	$(RM) $(RMFLAGS) $(RMS).PHONY: clean all

0 请登录后投票
   发表时间:2011-08-06  
Makefile 在Linux  C开发是相当有用处的

Makefile 其本质上一种编程语言,
只不过发明者比较厚道,没有去追求那些噱头,因为现在编程语言太多,乱!!
0 请登录后投票
   发表时间:2011-08-08  
不错,有时候make还可以做一些其他的东西。
建议 clean 用为目标。 .PHONY
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics