首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

大神帮小弟我看看makefile

2013-01-19 
大神帮我看看makefile我想在当前目录下建立3个目录,分别是src,inc,out。makefile放在当前目录下。源文件在sr

大神帮我看看makefile
我想在当前目录下建立3个目录,分别是src,inc,out。makefile放在当前目录下。源文件在src,头文件在inc,怎么样能把我所有的输出文件都放到out里面? 自己写了个makefile 总是提示没有目标规则,求大神帮我看下  谢谢!(用的是sdcc编译器,.rel文件相当于.o文件)
SRC +=./src/main.c
SRC +=./src/add.c 
CC      = sdcc
AR      = sdar 

INCDIR =./inc
OUTDIR = ./out
SRCDIR =./src
ALLSRCBASE = $(notdir $(basename $(SRC)))
ALLOBJ     = $(addprefix $(OUTDIR)/,$(addsuffix .rel, $(ALLSRCBASE)))
#OALLOBJ     = $(addprefix $(SRCDIR)/,$(addsuffix .rel, $(ALLSRCBASE)))

all:target
#SUFFIXES += .rel .ihx
#rel:$(OUTDIR)/6800.rel
target:$(ALLOBJ)
$(ALLOBJ):%.rel:%.c
$(CC) -c $< -o $@ -I$(INCDIR)
clean: 
-rm -f *.rel *.mem *.lst *.sym *.asm *.rst
# Listing of phony targets.
.PHONY : all clean 编译器 makefile sdcc
[解决办法]
INCDIR =./inc
OUTDIR = ./out
SRCDIR =./src

用shell扩展成绝对路径试试……
[解决办法]
编译过程中会在目录里跳来跳去的,相对路径会出问题
在makefile中使用shell命令把给定相对路径扩展成绝对路径,如果原本就是绝对路径的就不作处理! 

u-boot中Makefile对输出目录的处理

# 检查make变量“O”是不是来自于命令行,
ifdef O
ifeq ("$(origin O)", "command line")  
BUILD_DIR := $(O)
endif
endif

ifneq ($(BUILD_DIR),)
saved-output := $(BUILD_DIR)

# Attempt to create a output directory.
$(shell [ -d ${BUILD_DIR} ] 
[解决办法]
 mkdir -p ${BUILD_DIR})

# Verify if it was successful.
#确保BUILD_DIR里保存的是一个绝对路径
BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
#如果路径不可达,文件夹不存在,给出错误并停止编译
$(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
endif # ifneq ($(BUILD_DIR),)

热点排行