novesky的个人主页

http://www.qtcn.org/bbs/u/73156  [收藏] [复制]

novesky

  • 16

    关注

  • 37

    粉丝

  • 188

    访客

  • 等级:侠客
  • 总积分:130
  • 男,2011-11-16

最后登录:2016-01-11

更多资料

日志

分享我的工程文件

2011-08-30 16:04
    用QtCreator创建工程会自动产生一个工程文件,一般情况下已经足够了。但是在不同平台下编译发现生成的文件路径很不统一,还有其他种种问题,所以有时有必要进行修改。看看qt源代码的一些pro文件会发现,写工程文件也是门学问。可以看看助手里的文档,看看你用了多少。还有很多是文档中没有介绍的。
    这里我给的工程文件模板会使不同平台编译时生成文件到比较合理的位置(个人觉得),比如要目标为hello的工程,在win32下生成的目标文件存放在.obj/_win32,linux下是.obj/_linux等,而moc生成的文件则统一放在.moc/$[QT_VERSION],因为moc生成的和平台无关,和版本有关,ui和rcc也如此
    下面是config.pri文件,用来被pro文件包含,当然肯定有很多不足之处
  1. 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文件中可以简单的写如下内容

  1. 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一保持统一。以上仅供参考



分类:默认分类|回复:0|浏览:2386|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-01 23:25
©2005-2016 QTCN开发网 版权所有 Gzip disabled