用QtCreator创建工程会自动产生一个工程文件,一般情况下已经足够了。但是在不同平台下编译发现生成的文件路径很不统一,还有其他种种问题,所以有时有必要进行修改。看看qt源代码的一些pro文件会发现,写工程文件也是门学问。可以看看助手里的文档,看看你用了多少。还有很多是文档中没有介绍的。
这里我给的工程文件模板会使不同平台编译时生成文件到比较合理的位置(个人觉得),比如要目标为hello的工程,在win32下生成的目标文件存放在.obj/_win32,linux下是.obj/_linux等,而moc生成的文件则统一放在.moc/$[QT_VERSION],因为moc生成的和平台无关,和版本有关,ui和rcc也如此
下面是config.pri文件,用来被pro文件包含,当然肯定有很多不足之处
- CONFIG += #ezx#static ezx
CONFIG += profile
#profiling, -pg is not supported for msvc
debug:!*msvc*:profile {
QMAKE_CXXFLAGS_DEBUG += -pg
QMAKE_LFLAGS_DEBUG += -pg
}
#$[TARGET_PLATFORM]
#$[QT_ARCH] #windows symbian windowsce arm
PLATFORM_EXT =
ARCH_EXT =
TOOLCHAIN_EXT =
unix {
PLATFORM_EXT = _unix
*linux*: PLATFORM_EXT = _linux
maemo*: PLATFORM_EXT = _maemo
} else:win32 {
PLATFORM_EXT = _win32
} else:macx {
PLATFORM_EXT = _macx
}
ezx {
QT_VERSION = 2.3.8
CONFIG += qt warn_on release
DEFINES += QT_THREAD_SUPPORT CONFIG_EZX
PLATFORM_EXT = _ezx
QMAKE_CXXFLAGS.ARMCC +=
}
#*arm*: ARCH_EXT = ${ARCH_EXT}_arm
#isEqual(QT_ARCH, arm) {
contains(QT_ARCH, arm.*) {
ARCH_EXT = ${ARCH_EXT}_${QT_ARCH}
}
*64: ARCH_EXT = ${ARCH_EXT}_x64
*llvm*: TOOLCHAIN_EXT = _llvm
#*msvc*:
isEqual(TEMPLATE, app) {
DESTDIR = bin
} else {
DESTDIR = lib
}
TARGET = ${TARGET}${PLATFORM_EXT}${ARCH_EXT}${TOOLCHAIN_EXT}
OBJECTS_DIR = .obj/${PLATFORM_EXT}${ARCH_EXT}${TOOLCHAIN_EXT}
#for Qt2, Qt3 which does not have QT_VERSION. Qt4: $[QT_VERSION]
MOC_DIR = .moc/${QT_VERSION}
RCC_DIR = .rcc/${QT_VERSION}
UI_DIR = .ui/${QT_VERSION}
#unix: QMAKE_POST_LINK=strip $(TARGET)
#rules for ts->qm
isEmpty(QMAKE_LRELEASE) {
QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
unix: !exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease-qt4 }
else: !exists($$QMAKE_LRELEASE) { QMAKE_LRELEASE = lrelease }
}
updateqm.input = TRANSLATIONS
updateqm.output = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.qm
updateqm.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.qm
updateqm.CONFIG += no_link
#updateqm.CONFIG += no_link target_predeps #add this if no PRE_TARGETDEPS
QMAKE_EXTRA_COMPILERS += updateqm
PRE_TARGETDEPS += compiler_updateqm_make_all
pro文件中可以简单的写如下内容
- TEMPLATE = app
TARGET = hello
INCLUDEPATH += src
LIBS +=
TRANSLATIONS+= i18n/hello_zh-cn.ts
FORMS =
include(config.pri)
HEADERS = hello.h
SOURCES = hello.cpp
以后新的工程都可以包含config.pri一保持统一。以上仅供参考