• 6580阅读
  • 8回复

用QT2编译一个大的项目文件出现问题 [复制链接]

上一主题 下一主题
离线zhangjifei
 
只看楼主 倒序阅读 楼主  发表于: 2009-02-17
编译是出现如下错误:
  /armsys2410/qtx86/qt/bin/uic call.ui -o ./call.h
g++  -c -I/armsys2410/qtx86/qtopia/include -I/armsys2410/qtx86/qt/include -pipe
-DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG -DQTOPIA_APP_INTERFACE -I.moc/linux-generic-g++/ -o .obj/linux-generic-g++//call_impl.o call_impl.cpp
Assembler messages:
FATAL: can't create .obj/linux-generic-g++//call_impl.o: 没有那个文件或目录
make: *** [.obj/linux-generic-g++//call_impl.o] Error 2
请问牛人,可知道大概是哪方面的原因?因为是个项目文件,所以源码没办法贴出来
我的感觉可能是环境和参数设置问题。
离线浪漫天使
只看该作者 1楼 发表于: 2009-02-17
先qmake一下看看。。
只看该作者 2楼 发表于: 2009-02-17
新建个obj目录试试
离线wd007

只看该作者 3楼 发表于: 2009-02-17
编译的过程贴一下,大家看看
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线zhangjifei
只看该作者 4楼 发表于: 2009-02-18
qmake不行,所以才自己改写的Makefile,至于改写obj的目录,具体怎么做呵?

8gprs          call_impl.h    gprs_impl.h  Makefile 
8gprs.pro      call.ui        gprs.ui      pic        serial.cpp
call_impl.cpp  gprs_impl.cpp  main.cpp      serial.h
上面是我的所有项目源文件
而我的Makefile 内容是自己改编写的,如下:
#############################################################################
# Automatically generated from /root/test/qtopia/hello/Makefile.in
# Build options from
#############################################################################

default: all  #

CONTROL =

# Compiling
INTERFACE_DECL_PATH     = .
SYSCONF_CXX        = g++
SYSCONF_CC        = gcc
DASHCROSS        =

# Compiling with support libraries
SYSCONF_CXXFLAGS_X11    =
SYSCONF_CXXFLAGS_QT    = -I$(QTDIR)/include
SYSCONF_CXXFLAGS_QTOPIA    = -I$(QPEDIR)/include
SYSCONF_CFLAGS_QTOPIA    = -I$(QPEDIR)/include
SYSCONF_CXXFLAGS_OPENGL    = -I/usr/X11R6/include

# Compiling YACC output
SYSCONF_CXXFLAGS_YACC    = -Wno-unused -Wno-parentheses

# Linking with support libraries
SYSCONF_RPATH_X11    =
SYSCONF_RPATH_QT    = -Wl,-rpath,$(QTDIR)/lib
SYSCONF_RPATH_QTOPIA    = -Wl,-rpath,$(QPEDIR)/lib
SYSCONF_RPATH_OPENGL    = -Wl,-rpath,/usr/X11R6/lib

# Linking with support libraries
# X11
SYSCONF_LFLAGS_X11    =
SYSCONF_LIBS_X11    =
# Qt, Qt+OpenGL
SYSCONF_LFLAGS_QT    = -L$(QTDIR)/lib
SYSCONF_LFLAGS_QTOPIA    = -L$(QPEDIR)/lib
SYSCONF_LIBS_QT        = -lqte$(QT_THREAD_SUFFIX)
SYSCONF_LIBS_QT_OPENGL    =
SYSCONF_LIBS_QTOPIA    = -lqtopia
# OpenGL
SYSCONF_LFLAGS_OPENGL    = -L/usr/X11R6/lib
SYSCONF_LIBS_OPENGL    =
# Yacc
SYSCONF_LIBS_YACC    =

# Linking applications
SYSCONF_LINK        = gcc
SYSCONF_LFLAGS        =
SYSCONF_LIBS        =

# Link flags for shared objects
SYSCONF_LFLAGS_SHOBJ    = -shared

# Flags for threading
SYSCONF_CFLAGS_THREAD    = -D_REENTRANT
SYSCONF_CXXFLAGS_THREAD    = -D_REENTRANT
SYSCONF_LFLAGS_THREAD    =
SYSCONF_LIBS_THREAD    =  -lpthread

# Meta-object compiler
SYSCONF_MOC        = $(QTDIR)/bin/moc

# UI compiler
SYSCONF_UIC        = $(QTDIR)/bin/uic

# Linking shared libraries
#  - Build the $(TARGET) library, eg. lib$(TARGET).so.2.2.2
#  - Place target in $(DESTDIR) - which has a trailing /
#  - Usually needs to incorporate $(VER_MAJ), $(VER_MIN) and $(VER_PATCH)
#
SYSCONF_LINK_SHLIB    = gcc
SYSCONF_LINK_TARGET_SHARED    = lib$(TARGET).so.$(VER_MAJ).$(VER_MIN).$(VER_PATCH)
SYSCONF_LINK_LIB_SHARED    =  $(SYSCONF_LINK_SHLIB) -shared -Wl,-soname,lib$(TARGET).so.$(VER_MAJ) \
                     $(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \
                     $(OBJECTS) $(OBJMOC) $(LIBS) && \
                 mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \
                 cd $(DESTDIR) && \
                 rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ); \
                 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN)

# Linking static libraries
#  - Build the $(TARGET) library, eg. lib$(TARGET).a
#  - Place target in $(DESTDIR) - which has a trailing /
#
SYSCONF_AR        = ar cqs
SYSCONF_LINK_TARGET_STATIC = lib$(TARGET).a
SYSCONF_LINK_LIB_STATIC    = rm -f $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) ; \
                 $(SYSCONF_AR) $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS) $(OBJMOC)
# Compiling application source
SYSCONF_CXXFLAGS    = -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W -DNO_DEBUG
SYSCONF_CFLAGS        = -pipe -O2 -Wall -W
# Default link type (static linking is still be used where required)
SYSCONF_LINK_LIB    = $(SYSCONF_LINK_LIB_SHARED)
SYSCONF_LINK_TARGET    = $(SYSCONF_LINK_TARGET_SHARED)
# Compiling library source
SYSCONF_CXXFLAGS_LIB    = -fPIC
SYSCONF_CFLAGS_LIB    = -fPIC
# Compiling shared-object source
SYSCONF_CXXFLAGS_SHOBJ    = -fPIC
SYSCONF_CFLAGS_SHOBJ    = -fPIC
# Linking Qt
SYSCONF_LIBS_QTLIB    = $(SYSCONF_LFLAGS_X11) $(QT_LIBS_MT) $(QT_LIBS_OPT)
# Linking Qt applications
SYSCONF_LIBS_QTAPP    =

# Platform output directories
MOC_DIR = .moc/linux-generic-g++/
OBJECTS_DIR = .obj/linux-generic-g++/

#############################################################################

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

CXX    =    $(SYSCONF_CXX) $(QT_CXX_MT)
CXXFLAGS=    $(SYSCONF_CXXFLAGS_QTOPIA) $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS) -DQTOPIA_APP_INTERFACE
CC    =    $(SYSCONF_CC) $(QT_C_MT)
CFLAGS    =    $(SYSCONF_CFLAGS_QTOPIA) $(SYSCONF_CFLAGS) -DQTOPIA_APP_INTERFACE
INCPATH =    -I$(MOC_DIR)
LFLAGS    =    $(SYSCONF_LFLAGS_QTOPIA) $(SYSCONF_RPATH_QTOPIA) $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT)
LIBS    =    $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QTOPIA) $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP)
MOC    =    $(SYSCONF_MOC)
UIC    =    $(SYSCONF_UIC)

####### Target

DESTDIR = $(QPEDIR)/bin/
VER_MAJ = 1
VER_MIN = 0
VER_PATCH = 0
TARGET    = 8gprs
TARGET1 = lib$(TARGET).so.$(VER_MAJ)

####### Files

HEADERS =    gprs_impl.h \
        call_impl.h \
                serial.h
SOURCES =    gprs_impl.cpp \
        call_impl.cpp \
                serial.cpp \
        main.cpp
OBJECTS =    $(OBJECTS_DIR)/gprs_impl.o \
        $(OBJECTS_DIR)/main.o \
        $(OBJECTS_DIR)/gprs.o \
        $(OBJECTS_DIR)/serial.o \
        $(OBJECTS_DIR)/call_impl.o \
        $(OBJECTS_DIR)/call.o

INTERFACES =    gprs.ui
UICDECLS =      gprs.h
UICIMPLS =      gprs.cpp
SRCMOC    =    $(MOC_DIR)/gprs.cpp
OBJMOC    =    $(OBJECTS_DIR)/moc_gprs.o

INTERFACES =    call.ui
UICDECLS =      call.h
UICIMPLS =      call.cpp
SRCMOC  =      $(MOC_DIR)/call.cpp
OBJMOC  =      $(OBJECTS_DIR)/call.o
                                                                               



####### 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: $(DESTDIR)$(TARGET)

$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
    $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake:
    tmake 8gprs.pro

clean:
    -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
    -rm -f *~ core
    -rm -f allmoc.cpp

####### Extension Modules

listpromodules:
    @echo

listallmodules:
    @echo

listaddonpromodules:
    @echo

listaddonentmodules:
    @echo


REQUIRES=

####### Sub-libraries


###### Combined headers



####### Compile

$(OBJECTS_DIR)/gprs_impl.o: gprs_impl.cpp \
                serial.h \
        gprs_impl.h \
        gprs.h \
        call_impl.h \
        call.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/gprs_impl.o gprs_impl.cpp

$(OBJECTS_DIR)/call_impl.o: call_impl.cpp \
                serial.h \
                call_impl.h \
                call.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/call_impl.o call_impl.cpp

$(OBJECTS_DIR)/main.o: main.cpp \
        gprs_impl.h \
        gprs.h \
        call_impl.h \
        call.h \
                serial.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/main.o main.cpp

$(OBJECTS_DIR)/serial.o:serial.cpp \
              serial.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/serial.o serial.cpp     
gprs.h: gprs.ui
    $(UIC) gprs.ui -o $(INTERFACE_DECL_PATH)/gprs.h

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

$(OBJECTS_DIR)/gprs.o: gprs.cpp \
        gprs.h \
        gprs.ui
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/gprs.o gprs.cpp

$(OBJECTS_DIR)/moc_gprs.o: $(MOC_DIR)/moc_gprs.cpp \
        gprs.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/moc_gprs.o $(MOC_DIR)/moc_gprs.cpp

$(MOC_DIR)/moc_gprs.cpp: gprs.h
    $(MOC) gprs.h -o $(MOC_DIR)/moc_gprs.cpp

call.h: call.ui
    $(UIC) call.ui -o $(INTERFACE_DECL_PATH)/call.h
                                                                               
call.cpp: call.ui
    $(UIC) call.ui -i call.h -o call.cpp
                                                                               
$(OBJECTS_DIR)/call.o: call.cpp \
                call.h \
                call.ui
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/call.o call.cpp
                                                                               
$(OBJECTS_DIR)/moc_call.o: $(MOC_DIR)/moc_call.cpp \
                call.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(OBJECTS_DIR)/moc_call.o $(MOC_DIR)/moc_call.cpp
                                                                               
$(MOC_DIR)/moc_call.cpp: call.h
    $(MOC) call.h -o $(MOC_DIR)/moc_call.cpp
                                                                               


lupdate-check:
    @true

lupdate:
    @true

lrelease:
    @echo "No TRANSLATIONS"


ipkg: $(DESTDIR)$(TARGET) # among other things...
    CTL="$(CONTROL)"; for ctrl in $$CTL; do cd $(QPEDIR)/ipkg; ../bin/mkipks -platform linux-generic-g++  $(QPEDIR)/src/$$ctrl ; done

package: ipkg
    cd $(QPEDIR)/ipkg;     ../bin/mkPackages

Makefile: 8gprs.pro
    cd $(QPEDIR)/src;     ./configure  -platform linux-generic-g++  -make /root/test/qtopia/8gprs
离线浪漫天使
只看该作者 5楼 发表于: 2009-02-18
OBJECTS_DIR = .obj/linux-generic-g++/ 是你改的么
试试改成
OBJECTS_DIR = .obj/linux-generic-g++
再make一下

一般不要改Makefile ,因为Makefile是pro生成的 改了 重新编译时候还是照样被覆盖

方便的话 贴pro吧,那才是源头。。
估计可能是你的pro里面的 OBJECTS_DIR那里多了个 /  猜测而已
离线zhangjifei
只看该作者 6楼 发表于: 2009-02-20
谢谢几位的指点,我都试过了,不行

我的.pro如下:
TEMPLATE = app
DESTDIR = $(QPEDIR)/bin
                                                                               
CONFIG += qtopia warm_on release
                                                                               
                                                                               
# Input
HEADERS += call_impl.h gprs_impl.h serial.h
INTERFACES += call.ui gprs.ui
SOURCES += call_impl.cpp gprs_impl.cpp main.cpp serial.cpp
TARGET =8gprs
~
只看该作者 7楼 发表于: 2009-02-23
你不是说你手动改makefile了么……改了,单看pro就没用了
离线rockyluo

只看该作者 8楼 发表于: 2009-02-23
先make clean
重新make下
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
快速回复
限100 字节
 
上一个 下一个