00u-00-project-建立项目基本开发环境(一)建立一个Qt-peanutlib的项目

1.重点内容

  • 准备一个基本项目的程序与资源
  • 在Qt Creator中创建一个项目
  • 建立该项目的pro文件
  • 在Qt Creator中编译运行该

2.运行展示

3.程序示例

3.1 准备一个基本项目的程序与资源

在Qt工作目录中建立一个项目目录psample00u0,在psample00u0目录下建立3个子目录,分别是build,include,resoruce。

  • 目录build:存放项目编译后生成的程序代码文件及依赖代码,如dll,lib,exe等文件。在build下分别建立5.14.2->win32->debug->lib目录结构(5.14.2:Qt的版本号,wind32:windows32位,debug:debug模式,lib:编辑生成或依赖的dll,lib等文件),5.14.2->win32-release-lib目录结构。

 

  •  目录include:存放项目依赖的头文件,一个基本项目的头文件包括peanublib(peanutlib库头文件),3rdparty(第三方库头文件)。

 注:有关头文件的获取请参考“4.代码下载”。

3.2 在Qt Creator中创建一个项目

首先查看自己Qt及Qt Creator的版本,您构建的程序与版本有关,下面是一个例子。

在Qt Crearor中,在您的工作目录中新建一个Qt Widgets Application项目。

3.3 建立该项目的psample00u0.pro文件

  •  在当前工作目录psample00u0\build\5.14.2\win32\debug\lib下,建立依赖文件(相关依赖文件的资源,请参考“4.代码下载”),具体资源如下:

  • 在当前工作目录psample00u0\build\5.14.2\win32\release\lib下,建立依赖文件(相关依赖文件的资源,请参考“4.代码下载”),具体资源如下:

  • 修改psample00u0.pro文件

#编译成生可执行程序
TEMPLATE = app
#引入Qt各模块
QT       += core gui widgets xml sql network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#生成目标
CONFIG(release, debug|release) {
    #realease模式下的目标文件
    TARGET = psample00u0
} else {
    #debug模式下的目标文件
    TARGET = psample00u0d
}

isEmpty(BINARY_RESULT_DIR) {
    BINARY_RESULT_DIR = $${PWD}
}

!CONFIG(no_build_translations) {
    CONFIG *= build_translations
}

!CONFIG(no_log4qt) {
    CONFIG *= log4qt
}

!CONFIG(no_thirdwidget) {
    CONFIG *= thirdwidget
}

!CONFIG(no_peanutlib) {
    CONFIG *= peanutlib
}

CONFIG(release, debug|release) {
    message(Release)
    BUILD_TYPE = release
}else{
    message(Debug)
    BUILD_TYPE = debug
}

#引入依赖头文件存放地址:声明LOG4QT_PATH变量,在项目根目录下的include/3rdparty/log4qt
LOG4QT_PATH = $$PWD/include/3rdparty/log4qt
CONFIG(log4qt) {
    DEFINES *= HAVE_LOG4QT
}

#引入依赖头文件存放地址:声明THIRDWIDGET_PATH变量
THIRDWIDGET_PATH = $$PWD/include/3rdparty/thirdwidget
CONFIG(thirdwidget) {
    DEFINES *= HAVE_THIRDWIDGET
}

#引入依赖头文件存放地址:声明PEANUTLIB_PATH变量,peanutlib库
PEANUTLIB_PATH = $$PWD/include/peanutlib
CONFIG(peanutlib) {
    DEFINES *= HAVE_PEANUTLIB
}

SOURCES += \
    main.cpp \
    ps_application.cpp \
    ps_helloworld_mainwindow.cpp \
    ps_mainwindow.cpp

HEADERS += \
    ps_application.h \
    ps_helloworld_mainwindow.h \
    ps_mainwindow.h

FORMS += \
    ps_helloworld_mainwindow.ui \
    ps_mainwindow.ui

#编译生成目录
BUILD_DIR = $${BINARY_RESULT_DIR}/build/$${QT_VERSION}
#头文件依赖目录
DEST_INCLUDE_DIR = $$PWD/include

#unix,linux生成
unix{
    ARCH_DIR       = $${OUT_PWD}/unix
    ARCH_TYPE      = unix

    macx{
        ARCH_DIR   = $${OUT_PWD}/macx
        ARCH_TYPE  = macx
    }

    linux{
        !contains(QT_ARCH, x86_64) {
            message("Compiling for 32bit system")
            ARCH_DIR  = $${OUT_PWD}/linux32
            ARCH_TYPE = linux32
        }else{
            message("Compiling for 64bit system")
            ARCH_DIR  = $${OUT_PWD}/linux64
            ARCH_TYPE = linux64
        }
    }
}

#windows编译生成
win32 {
    !contains(QT_ARCH, x86_64) {
        message("Compiling for 32bit system")
        ARCH_DIR  = $${OUT_PWD}/win32
        ARCH_TYPE = win32
    } else {
        message("Compiling for 64bit system")
        ARCH_DIR  = $${OUT_PWD}/win64
        ARCH_TYPE = win64
    }
}

#编译生成的dll,lib等文件存放目录
DEST_LIBS      = $${BUILD_DIR}/$${ARCH_TYPE}/$${BUILD_TYPE}/lib
#编译生成的可执行文件存放目录
DEST_BINS      = $${BUILD_DIR}/$${ARCH_TYPE}/$${BUILD_TYPE}/$${TARGET}

MOC_DIR        = $${ARCH_DIR}/$${BUILD_TYPE}/moc
#指定来自uic的所有中间文件放置的目录(.ui文件转化成ui_*.h文件的存放目录
UI_DIR         = $${ARCH_DIR}/$${BUILD_TYPE}/ui
UI_HEADERS_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/ui
UI_SOURCES_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/ui
OBJECTS_DIR    = $${ARCH_DIR}/$${BUILD_TYPE}/obj
RCC_DIR        = $${ARCH_DIR}/$${BUILD_TYPE}/rcc

#装载log4qt
CONFIG(log4qt) {
    message(log4qt)
    INCLUDEPATH += \
                   $$LOG4QT_PATH \
                   $$LOG4QT_PATH/log4qt
    DEPENDPATH += \
                   $$LOG4QT_PATH \
                   $$LOG4QT_PATH/log4qt
    LIBS += -L$${DEST_LIBS}
    CONFIG(debug, debug|release) {
        LIBS += -llog4qtd
    } else {
        LIBS += -llog4qt
    }
}

#装载thirdwidget
CONFIG(thirdwidget) {
    message(thirdwidget)
    INCLUDEPATH += \
                   $$THIRDWIDGET_PATH \
                   $$THIRDWIDGET_PATH/QtAwesome \
                   $$THIRDWIDGET_PATH/qtrest
    DEPENDPATH += \
                   $$THIRDWIDGET_PATH \
                   $$THIRDWIDGET_PATH/QtAwesome \
                   $$THIRDWIDGET_PATH/qtrest

    LIBS += -L$${DEST_LIBS}
    CONFIG(debug, debug|release) {
        LIBS += -lthirdwidgetd
    } else {
        LIBS += -lthirdwidget
    }
}

#装载PeanutLib
CONFIG(peanutlib) {
    message(peanutlib)
    INCLUDEPATH += \
                   $$PEANUTLIB_PATH
    DEPENDPATH += \
                  $$PEANUTLIB_PATH
    LIBS += -L$${DEST_LIBS}
    CONFIG(debug, debug|release) {
        LIBS += -lpeanutlibd
    } else {
        LIBS += -lpeanutlib
    }
}

DEST_DIR       = $${DEST_BINS}
PEANUT_SAMPLE_DIR    = $${DEST_DIR}

macx{
    CONFIG  += app_bundle
}

unix:{
    DESTDIR = $$DEST_DIR
    QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$PEANUT_SAMPLE_DIR\" $$escape_expand(\n\t)
        linux{
            #Link share lib to ../lib rpath
            QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
            QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
            QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/../lib
            QMAKE_LFLAGS_RPATH += #. .. ./libs
        }
    target.path = $${DEST_DIR}
    INSTALLS = target
}

win32 {
    DESTDIR = $$DEST_DIR
    contains(QMAKE_HOST.os, Linux) {
        QMAKE_POST_LINK += $$QMAKE_COPY_DIR \"$$EXTRA_DIR\" \"$$PEANUT_SAMPLE_DIR\" $$escape_expand(\n\t)
    } else {
        EXTRA_DIR ~= s,/,\\,g
        DEST_DIR ~= s,/,\\,g
    }
}

RESOURCES += \
    resource/res.qrc

3.4 在Qt Creator中编译运行该项目

Qt Creator在debug模式下编译,编译生成的环境如下:

目前生成的环境是debug模式下,该模式允许在Qt Creator环境下调试,不能单独运行,如果要单独运行,请参考其它有关发布章节。

4. 代码下载

代码下载链接:(62条消息) psample00u0-C++文档类资源-CSDN文库https://download.csdn.net/download/wangrq_cn/87468165

Peanutlib项目演示程序下载:peanut_pwdis: pwdis是QT应用系统开发框架(C++),采用分层模块化设计,底层peanutlib按模块封装方便易用的类库及API(xml,db,appconfig,log,grid,json,bean等十几个),应用层提供部门人员权限及报表等,还提供了开发中常用的组件使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积木虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值