我只是在我的slax框上安装qt,而我试图用qmake编写和编译。
但问题是qmake不会写入'Makefile'来包含-Lqt-mt或-Lqt。 我必须手动给它,否则有没有解决的链接在那里。 我能为此做什么?对此有什么解决办法?
这是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 "$@" "$<" .cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .cxx.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .Co: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .co: $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" ####### 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 – 版本,我确实得到了这个。
QMake version 2.01a Using Qt version 4.5.3 in /usr/lib/qt/lib
– 提前致谢 –
当一台机器上安装了多个Qt时,正确设置环境以指向正确的Qt版本非常重要。 以下是检查的重要环境变量:
$QTDIR
– 应该指向Qt安装的基础目录。 $QMAKESPEC
– 应指向$QTDIR
下的make specification目录(例如$QTDIR/mkspecs/linux-g++
)。 $QT_PLUGIN_PATH
– 应该指向插件目录,通常在Qt安装中(例如$QTDIR/plugins
)。 $PATH
– 它应该有$QTDIR/bin
目录。 您希望使用的安装应该首先在$PATH
。 如果一切都失败了,请检查您的完整环境,以确保正确引用了正确的Qt安装(在Windows上set
* nix时使用env
)。
如果你注意到在由qmake
生成的Makefile
指向错误安装的目录,很可能是你的环境没有正确设置(在这种情况下, $QMAKESPEC
是罪魁祸首)。
最后,需要注意的是,Qt3中的库不再存在于Qt4中:Qt3包含libqt-mt
, libqui
等libQtCore
包含libQtCore
, libQtGui
等