qtopia-2.2.0 make overriding commands --- 問題解決


沒注意看文字,其實 天嵌科技 已經標明瞭 “注意重複出現” 的問題,只是自己沒有注意。


今天按照 天嵌的 qtopia-2.2.0 製作 QT 應用程序,

按照手冊:

tmake -o Makefile second.pro
生成 Makefile 文件 . 如下:

#############################################################################
# Makefile for building second
# Generated by tmake at 17:08, 2013/04/19
#     Project: second
#    Template: app
#############################################################################

####### Compiler, tools and options

CC	=	gcc
CXX	=	g++
CFLAGS	=	-pipe -Wall -W -O2 -DNO_DEBUG
CXXFLAGS=	-pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG
INCPATH	=	-I$(QTDIR)/include -I$(QPEDIR)/include
LINK	=	g++
LFLAGS	=	
LIBS	=	$(SUBLIBS) -L$(QPEDIR)/lib -L$(QTDIR)/lib -lqpe -lqtopia -lqte
MOC	=	$(QTDIR)/bin/moc
UIC	=	$(QTDIR)/bin/uic

TAR	=	tar -cf
GZIP	=	gzip -9f

####### Files

HEADERS =	second.h
SOURCES =	main.cpp \
		second.cpp
OBJECTS =	main.o \
		second.o \
		second.o
INTERFACES =	second.ui
UICDECLS =	second.h
UICIMPLS =	second.cpp
SRCMOC	=	moc_second.cpp \
		moc_second.cpp
OBJMOC	=	moc_second.o \
		moc_second.o
DIST	=	
TARGET	=	$(QPEDIR)/image/opt/Qtopia/bin/second
DESKTOP =	$(QPEDIR)/image/opt/Qtopia/apps/EmbedSky/second.desktop
ICON	=	$(QPEDIR)/image/opt/Qtopia/pics/second.png
INTERFACE_DECL_PATH = .

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules


all: $(TARGET)
	cp -f second.desktop $(DESKTOP)
	cp -f second.png $(ICON)

$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) 
	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake: Makefile

Makefile: second.pro
	tmake second.pro -o Makefile

dist:
	$(TAR) second.tar second.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)
	$(GZIP) second.tar

clean:
	-rm -f $(OBJECTS) $(OBJMOC) $(DESKTOP) $(ICON) $(TARGET)
	-rm -f *~ core

####### Sub-libraries


###### Combined headers


####### Compile

main.o: main.cpp \
		second.h \
		/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include/qtopia/qpeapplication.h

second.o: second.cpp \
		second.h \
		second.ui

second.h: second.ui
	$(UIC) second.ui -o $(INTERFACE_DECL_PATH)/second.h

second.cpp: second.ui
	$(UIC) second.ui -i second.h -o second.cpp

second.o: second.cpp \
		second.h \
		second.ui

moc_second.o: moc_second.cpp \
		second.h

moc_second.o: moc_second.cpp \
		second.h

moc_second.cpp: second.h
	$(MOC) second.h -o moc_second.cpp

moc_second.cpp: second.h
	$(MOC) second.h -o moc_second.cpp


接着 make :

[root@localhost second]# make
Makefile:121: warning: overriding commands for target `moc_second.cpp'
Makefile:118: warning: ignoring old commands for target `moc_second.cpp'
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/bin/uic second.ui -o ./second.h
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include -o main.o main.cpp
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qdatetime.h:51: warning: 'class QDate' has virtual functions but non-virtual destructor
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include/qtopia/../../src/libraries/qtopia/qcom.h:88: warning: 'struct QUnknownInterface' has virtual functions but non-virtual destructor
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include/qtopia/../../src/libraries/qtopia/qcom.h:100: warning: 'struct QLibraryInterface' has virtual functions but non-virtual destructor
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include/qtopia/../../src/libraries/qtopia/applicationinterface.h:49: warning: 'struct ApplicationInterface' has virtual functions but non-virtual destructor
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/bin/uic second.ui -i second.h -o second.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include -o second.o second.cpp
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qtooltip.h:87: warning: 'class QToolTip' has virtual functions but non-virtual destructor
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/bin/moc second.h -o moc_second.cpp
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include -o moc_second.o moc_second.cpp
g++  -o second main.o second.o second.o moc_second.o moc_second.o  -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/lib -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/lib -lqpe -lqtopia -lqte
second.o: In function `second::user_button()':
second.cpp:(.text+0x0): multiple definition of `second::user_button()'
second.o:second.cpp:(.text+0x0): first defined here
second.o: In function `second::~second()':
second.cpp:(.text+0x10): multiple definition of `second::~second()'
second.o:second.cpp:(.text+0x10): first defined here
second.o: In function `second::~second()':
second.cpp:(.text+0x40): multiple definition of `second::~second()'
second.o:second.cpp:(.text+0x40): first defined here
second.o: In function `second::~second()':
second.cpp:(.text+0x60): multiple definition of `second::~second()'
second.o:second.cpp:(.text+0x60): first defined here
second.o: In function `second::event(QEvent*)':
second.cpp:(.text+0x80): multiple definition of `second::event(QEvent*)'
second.o:second.cpp:(.text+0x80): first defined here
second.o: In function `second::second(QWidget*, char const*, unsigned int)':
second.cpp:(.text+0x170): multiple definition of `second::second(QWidget*, char const*, unsigned int)'
second.o:second.cpp:(.text+0x170): first defined here
second.o: In function `second::second(QWidget*, char const*, unsigned int)':
second.cpp:(.text+0x580): multiple definition of `second::second(QWidget*, char const*, unsigned int)'
second.o:second.cpp:(.text+0x580): first defined here
moc_second.o: In function `second::className() const':
moc_second.cpp:(.text+0x0): multiple definition of `second::className() const'
moc_second.o:moc_second.cpp:(.text+0x0): first defined here
moc_second.o: In function `second::staticMetaObject()':
moc_second.cpp:(.text+0x90): multiple definition of `second::staticMetaObject()'
moc_second.o:moc_second.cpp:(.text+0x90): first defined here
moc_second.o:(.bss+0x0): multiple definition of `second::metaObj'
moc_second.o:(.bss+0x0): first defined here
moc_second.o: In function `second::tr(char const*, char const*)':
moc_second.cpp:(.text+0x170): multiple definition of `second::tr(char const*, char const*)'
moc_second.o:moc_second.cpp:(.text+0x170): first defined here
moc_second.o: In function `second::tr(char const*)':
moc_second.cpp:(.text+0x1b0): multiple definition of `second::tr(char const*)'
moc_second.o:moc_second.cpp:(.text+0x1b0): first defined here
moc_second.o: In function `second::initMetaObject()':
moc_second.cpp:(.text+0x1f0): multiple definition of `second::initMetaObject()'
moc_second.o:moc_second.cpp:(.text+0x1f0): first defined here
collect2: ld returned 1 exit status
make: *** [second] Error 1

出現了:overriding commands for target `moc_second.cpp'  的警告 ,即是  重複出現.

second.o:second.cpp:(.text+0x60): first defined here    說明被重複定義了.

查看 Makefile 文件:

OBJECTS =	main.o \
		second.o \
		second.o

SRCMOC	=	moc_second.cpp \
		moc_second.cpp
OBJMOC	=	moc_second.o \
		moc_second.o

moc_second.o: moc_second.cpp \
		second.h

moc_second.o: moc_second.cpp \
		second.h

moc_second.o: moc_second.cpp \
		second.h

moc_second.cpp: second.h
	$(MOC) second.h -o moc_second.cpp

moc_second.cpp: second.h
	$(MOC) second.h -o moc_second.cpp

發現很多的重複在裏面.

後來去掉了這些重複的代碼.

再 make . 

出現:make: *** No rule to make target`INTERFACES',

[root@localhost second]# make
make: *** No rule to make target `INTERFACES', needed by `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/image/opt/Qtopia/bin/second'.  Stop.
看提示信息是 Makefile 有錯誤.

查找到:INTERFACES:

OBJECTS =	main.o \
		second.o \
INTERFACES =	second.ui

可以看到  second.o \  多了一個 \ .

將其刪除,再 make.

[root@localhost second]# make
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/include -o moc_second.o moc_second.cpp
g++  -o /opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/image/opt/Qtopia/bin/second main.o second.o  moc_second.o   -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/lib -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/lib -lqpe -lqtopia -lqte
cp -f second.desktop /opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/image/opt/Qtopia/apps/EmbedSky/second.desktop
cp -f second.png /opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/image/opt/Qtopia/pics/second.png

成功了,生成了所需的文件.









發佈了115 篇原創文章 · 獲贊 21 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章