当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教下面makefile中的两个问题
帖子发表于 : 2006-08-15 17:18 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
# ### Customising
# # 用户设定
# #
# # Adjust the following if necessary; EXECUTABLE is the target
# # executable's filename, and LIBS is a list of libraries to link in
# # (e.g. alleg, stdcx, iostr, etc). You can override these on make's
# # command line of course, if you prefer to do it that way.
# #
# # 如果需要,调整下面的东西。 EXECUTABLE 是目标的可执行文件名, LIBS
# # 是一个需要连接的程序包列表(例如 alleg, stdcx, iostr 等等)。当然你
# # 可以在 make 的命令行覆盖它们,你愿意就没问题。
# #

EXECUTABLE := test
#LIBS := alleg

# # Now alter any implicit rules' variables if you like, e.g.:
# #
# # 现在来改变任何你想改动的隐含规则中的变量,例如

CFLAGS := -g -Wall -O3 -m486
CXXFLAGS := $(CFLAGS)

# You shouldn't need to change anything below this point.
# #
# # 从这里开始,你应该不需要改动任何东西。(我是不太相信,太NB了!)

#vpath %.h ../headers # ### Customising
# # 用户设定
# #
# # Adjust the following if necessary; EXECUTABLE is the target
# # executable's filename, and LIBS is a list of libraries to link in
# # (e.g. alleg, stdcx, iostr, etc). You can override these on make's
# # command line of course, if you prefer to do it that way.
# #
# # 如果需要,调整下面的东西。 EXECUTABLE 是目标的可执行文件名, LIBS
# # 是一个需要连接的程序包列表(例如 alleg, stdcx, iostr 等等)。当然你
# # 可以在 make 的命令行覆盖它们,你愿意就没问题。
# #

EXECUTABLE := test
#LIBS := alleg # 要求 make 在“../headers”目录下搜索所有以“.h”结尾的文件。(如果在当前目录没有找到的话)

SOURCE := $(wildcard *.c) $(wildcard *.cc)
OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCE)))
DEPS := $(patsubst %.o,%.d,$(OBJS))
MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.c,$(MISSING_DEPS)) \
$(patsubst %.d,%.cc,$(MISSING_DEPS)))
CPPFLAGS += -MD

# 直接假定指定的目的需要更新
.PHONY : everything deps objs clean veryclean rebuild

everything : $(EXECUTABLE)

deps : $(DEPS)

objs : $(OBJS)

clean:
@$(RM-F) *.o
@$(RM-F) *.d

veryclean: clean
@$(RM-F) $(EXECUTABLE)

rebuild: veryclean everything

ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS) :
@$(RM-F) $(patsubst %.d,%.o,$@)
endif

-include $(DEPS)

$(EXECUTABLE) : $(OBJS)
gcc -o $(EXECUTABLE) $(OBJS) $(addprefix -l,$(LIBS))
# addprefix的作用是把第二个参数列表的每一项加上第一个参数值作为前缀


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-08-15 17:19 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
我的问题是
1 CFLAGS := -g -Wall -O3 -m486
CXXFLAGS := $(CFLAGS)
定义了却没有使用的地方,是不是被makefile默认使用了?

2 CPPFLAGS += -MD ,但是CFLAGS没有,那么为什么我编译c程序的时候也生成了.d文件?


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-08-15 17:19 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
我的问题是
1 CFLAGS := -g -Wall -O3 -m486
CXXFLAGS := $(CFLAGS)
定义了却没有使用的地方,是不是被makefile默认使用了?

2 CPPFLAGS = -MD ,但是CFLAGS没有,那么为什么我编译c程序的时候也生成了.d文件?


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-08-23 21:33 

注册: 2006-07-23 15:02
帖子: 200
送出感谢: 0 次
接收感谢: 0 次
没有人知道么?


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-08-28 9:19 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
make -n -p 会打印出所有规则,包括默认规则,从中你可以找出什么地方需要用到CXXFLAGS,类似的你也可以找到什么地方用到了CPPFLAGS。cpp是c语言预处理器,编译任何c程序时肯定是要用到它的。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译