2012-10-29 90 views
2

我只是在我的slax框上安裝qt, 我嘗試使用qmake編寫和編譯。Qmake不包括qt的庫路徑

但問題是qmake不會寫'Makefile'來包含-Lqt-mt或-Lqt。 我必須手動給它,否則有沒有解決的鏈接。我可以爲此做什麼 ?對此的任何解決方法?

enter image description here

這是由QMAKE的 'Makefile' 文件輸出。

############################################################################# 
# Makefile for building: hello 
# Generated by qmake (2.01a) (Qt 4.5.3) on: Tue Feb 2 04:04:03 2010 
# Project: hello_world.pro 
# Template: app 
# Command: /usr/bin/qmake -unix -o Makefile hello_world.pro 
############################################################################# 

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

CC   = gcc 
CXX   = g++ 
DEFINES  = 
CFLAGS  = -pipe $(DEFINES) 
CXXFLAGS  = -pipe $(DEFINES) 
INCPATH  = -I/usr/lib/qt-3.3.8b/mkspecs/linux-g++ -I. 
LINK   = g++ 
LFLAGS  = 
LIBS   = $(SUBLIBS) 
AR   = ar cqs 
RANLIB  = 
QMAKE   = /usr/bin/qmake 
TAR   = tar -cf 
COMPRESS  = gzip -9f 
COPY   = cp -f 
SED   = sed 
COPY_FILE  = $(COPY) 
COPY_DIR  = $(COPY) -r 
INSTALL_FILE = $(COPY_FILE) 
INSTALL_DIR = $(COPY_DIR) 
INSTALL_PROGRAM = $(COPY_FILE) 
DEL_FILE  = rm -f 
SYMLINK  = ln -sf 
DEL_DIR  = rmdir 
MOVE   = mv -f 
CHK_DIR_EXISTS= test -d 
MKDIR   = mkdir -p 

####### Output directory 

OBJECTS_DIR = ./ 

####### Files 

SOURCES  = hello_world.cpp 
OBJECTS  = hello_world.o 
DIST   = hello_world.pro 
QMAKE_TARGET = hello 
DESTDIR  = 
TARGET  = hello 

first: all 
####### Implicit rules 

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

.cpp.o: 
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "[email protected]" "$<" 

.cc.o: 
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "[email protected]" "$<" 

.cxx.o: 
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "[email protected]" "$<" 

.C.o: 
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "[email protected]" "$<" 

.c.o: 
    $(CC) -c $(CFLAGS) $(INCPATH) -o "[email protected]" "$<" 

####### Build rules 

all: Makefile $(TARGET) 

$(TARGET): $(OBJECTS) 
    $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) 

Makefile: hello_world.pro /usr/lib/qt-3.3.8b/mkspecs/linux-g++/qmake.conf 
    $(QMAKE) -unix -o Makefile hello_world.pro 
qmake: FORCE 
    @$(QMAKE) -unix -o Makefile hello_world.pro 

dist: 
    @$(CHK_DIR_EXISTS) .tmp/hello1.0.0 || $(MKDIR) .tmp/hello1.0.0 
    $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/hello1.0.0/ && (cd `dirname .tmp/hello1.0.0` && $(TAR) hello1.0.0.tar hello1.0.0 && $(COMPRESS) hello1.0.0.tar) && $(MOVE) `dirname .tmp/hello1.0.0`/hello1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/hello1.0.0 


clean:compiler_clean 
    -$(DEL_FILE) $(OBJECTS) 
    -$(DEL_FILE) *~ core *.core 


####### Sub-libraries 

distclean: clean 
    -$(DEL_FILE) $(TARGET) 
    -$(DEL_FILE) Makefile 


compiler_clean: 

####### Compile 

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

####### Install 

install: FORCE 

uninstall: FORCE 

FORCE: 

這裏是我使用的.pro文件。

TEMPLATE=app 
CONFIG+= qt warn_on release 
HEADERS= 
SOURCES=hello_world.cpp 
TARGET=hello 

我已經設置了$ QTDIR,我認爲一切都已到位。 我錯過了哪裏?爲什麼我必須手動給它?爲什麼qmake在第一個 的地方不起作用?

編輯: 有makefile中

LIBS   = $(SUBLIBS) 

我所做的是改變它,

LIBS   = $(SUBLIBS) -lqt-mt 

後,我改變了一切工作正常!問題是,爲什麼我不得不手動做這樣的事情呢?

FOR @Frank Osterfeld 我想我正在使用正確的'qmake',因爲,當我打了qmake --version,我確實得到了這個。

QMake version 2.01a 
Using Qt version 4.5.3 in /usr/lib/qt/lib 

--Thanks在advance--

+2

什麼是命令的結果'QMAKE - 查詢? – UmNyobe

+0

這是一個makefile,我會發布它。 –

+1

你的項目文件是什麼樣的? –

回答

2

當有一個機器上的多個Qt的安裝,這一點很重要的環境已經建立正確指向正確的Qt版本。以下是要檢查的重要環境變量:

  1. $QTDIR - 應該指向Qt安裝的基本目錄。
  2. $QMAKESPEC - 應指向$QTDIR(例如$QTDIR/mkspecs/linux-g++)下的製造規格目錄。
  3. $QT_PLUGIN_PATH - 應該指向插件目錄,通常在Qt安裝中(例如$QTDIR/plugins)。
  4. $PATH - 應該在其中有$QTDIR/bin目錄。您希望使用的安裝應該在$PATH之內。

如果這些方法都失敗,請檢查您的完整環境,以確保正確的Qt的安裝被稱爲(使用env在* nix,set在Windows上)。

如果您注意到指向由qmake生成的Makefile中的錯誤安裝的目錄,很可能是您的環境未正確設置(在這種情況下,$QMAKESPEC是罪魁禍首)。

最後,需要注意的是,從QT3庫不再存在於Qt4的是很重要的:QT3有libqt-mtlibqui等Qt4的有libQtCorelibQtGui

+0

或者更好的是不要使用這個變量,並使用適當的'qmake'可執行文件。可能是'qtchooser'會有所幫助。你唯一要提供給'qmake'的是'-spec'參數,它可以在'qtbase/mkspecs'中找到。祝你好運。 – kyb