我只是在我的 slax 盒子上安装了 qt, 我尝试使用 qmake 编写和编译。
但问题是 qmake 没有将它的“Makefile”写入包含 -Lqt-mt 或 -Lqt。 我必须手动给它,否则那里有 Unresolved 链接。我能做什么 为此做些什么?对此有任何解决方法吗?
这是 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 "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(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
我改变后一切正常!问题又来了,为什么我必须这样做 手动的东西?
为@Frank Osterfeld 我认为我使用的是正确的“qmake”,因为, 当我点击 qmake --version 时,我确实明白了。
QMake version 2.01a
Using Qt version 4.5.3 in /usr/lib/qt/lib
--提前致谢--
最佳答案
当一台机器上安装了多个 Qt 时,正确设置环境以指向正确的 Qt 版本非常重要。以下是要检查的重要环境变量:
$QTDIR
-- 应该指向 Qt 安装的基本目录。$QMAKESPEC
-- 应指向$QTDIR
下的制造规范目录(例如$QTDIR/mkspecs/linux-g++
)。$QT_PLUGIN_PATH
-- 应该指向插件目录,通常在 Qt 安装中(例如$QTDIR/plugins
)。$PATH
-- 应包含$QTDIR/bin
目录。您希望使用的安装应该首先位于$PATH
中。
如果一切都失败了,请检查您的完整环境以确保引用了正确的 Qt 安装(在 *nix 上使用 env
,在 Windows 上使用 set
)。
如果您注意到 qmake
生成的 Makefile
中的目录指向错误的安装,很可能是您的环境设置不正确(在这种情况下, $QMAKESPEC
是罪魁祸首)。
最后,重要的是要注意 Qt4 中不再存在来自 Qt3 的库:Qt3 有 libqt-mt
、libqui
等。Qt4 有 libQtCore
, libQtGui
等
关于linux - Qmake不包含qt的库路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127264/