当前位置: 技术问答>linux和unix
谁能帮我看一下这个make文件?
来源: 互联网 发布时间:2015-01-17
本文导语: #########用户设定#################### ###可执行文件名 EXECUTABLE = ocidemo # ###需要的头文件目录 INCLUDES = -I. -I/usr/include/cxx -I$(ORACLE_HOME)/rdbms/demo # ###需要的动态或静态库文件 LIBS := -L/usr/lib -L/usr/sys/lib -L$(ORACLE_HOME)/lib L$(...
#########用户设定####################
###可执行文件名
EXECUTABLE = ocidemo
#
###需要的头文件目录
INCLUDES = -I. -I/usr/include/cxx -I$(ORACLE_HOME)/rdbms/demo
#
###需要的动态或静态库文件
LIBS := -L/usr/lib -L/usr/sys/lib -L$(ORACLE_HOME)/lib L$(ORACLE_HOME)/rdbms/lib -lclntsh
#
###C语言编译程序
CC = cxx
#
###C++编译程序
CXX = cxx
#
###C编译参数
CFLAGS := -g -Wall -O3 $(INCLUDES)
CXXFLAGS := $(CFLAGS)
#
###C预编译选项
CPPFLAGS += -MD
#
###源文件
SOURCES := $(wildcard *.c) $(wildcard *.cc)
#
###目标文件
OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.c,$(SOURCE)))
#
###依靠文件
DEPS := $(patsubst %.o %.d $(OBJS))
MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCE := $(wildcard $(patsubst %.d, %.c, $(MISSING_DEPS)) $(patsubst %.d, %.cc,$(MISSING_DEPS)))
#
.PHONY: everything deps objs clean everyclean rebuild
#
everything : $(EXECUTABLE)
#
deps : $(DEPS)
#
objs : $(OBJS)
#
clean:
@$(RM) *.o
@$(RM) *.d
#
everyclean : clean
@$(RM) $(EXECUTABLE)
#
rebuild : everyclean everything
#
ifneq ($(MISSING_DEPS), )
$(MISSING_DEPS):
@$(RM) $(patsubst %d, %.o $@)
endif
#
-include $(DEPS)
#
$(EXECUTABLE) : $(OBJS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(EXECUTABLE) $(OBJS) $(LIBS)
这个文件是我根据别人的文件该的,但执行时出错,提示在@$(RM) 这行
必须要一个seperator,即使删除这以后,其它行还是这样的错误,请高手指教?
###可执行文件名
EXECUTABLE = ocidemo
#
###需要的头文件目录
INCLUDES = -I. -I/usr/include/cxx -I$(ORACLE_HOME)/rdbms/demo
#
###需要的动态或静态库文件
LIBS := -L/usr/lib -L/usr/sys/lib -L$(ORACLE_HOME)/lib L$(ORACLE_HOME)/rdbms/lib -lclntsh
#
###C语言编译程序
CC = cxx
#
###C++编译程序
CXX = cxx
#
###C编译参数
CFLAGS := -g -Wall -O3 $(INCLUDES)
CXXFLAGS := $(CFLAGS)
#
###C预编译选项
CPPFLAGS += -MD
#
###源文件
SOURCES := $(wildcard *.c) $(wildcard *.cc)
#
###目标文件
OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.c,$(SOURCE)))
#
###依靠文件
DEPS := $(patsubst %.o %.d $(OBJS))
MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCE := $(wildcard $(patsubst %.d, %.c, $(MISSING_DEPS)) $(patsubst %.d, %.cc,$(MISSING_DEPS)))
#
.PHONY: everything deps objs clean everyclean rebuild
#
everything : $(EXECUTABLE)
#
deps : $(DEPS)
#
objs : $(OBJS)
#
clean:
@$(RM) *.o
@$(RM) *.d
#
everyclean : clean
@$(RM) $(EXECUTABLE)
#
rebuild : everyclean everything
#
ifneq ($(MISSING_DEPS), )
$(MISSING_DEPS):
@$(RM) $(patsubst %d, %.o $@)
endif
#
-include $(DEPS)
#
$(EXECUTABLE) : $(OBJS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(EXECUTABLE) $(OBJS) $(LIBS)
这个文件是我根据别人的文件该的,但执行时出错,提示在@$(RM) 这行
必须要一个seperator,即使删除这以后,其它行还是这样的错误,请高手指教?
|
令名行前要加't' Tab分割符,如下行应该以Tab开头。
@$(RM) *.o
@$(RM) *.d
@$(RM) $(EXECUTABLE)
ifneq ($(MISSING_DEPS), )
@$(RM) $(patsubst %d, %.o $@)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(EXECUTABLE) $(OBJS) $(LIBS)
@$(RM) *.o
@$(RM) *.d
@$(RM) $(EXECUTABLE)
ifneq ($(MISSING_DEPS), )
@$(RM) $(patsubst %d, %.o $@)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $(EXECUTABLE) $(OBJS) $(LIBS)
|
楼上的没错,一般在makefile 或Makefile中出现separeate错误基本上是TAB问题
再者,@$(RM) *.o 前的@符 应该没有必要
可以试试
再者,@$(RM) *.o 前的@符 应该没有必要
可以试试
|
最上面定义:
RM =rm -f -r
@$(RM) *.o
@$(RM) *.d
@$(RM) $(EXECUTABLE)
|
定义 RM 后用 $(RM) *.o,不要用 @$
|
不太懂!!