Log4Qt 使用筆記 二

2021-08-10 22:14:37 字數 2718 閱讀 6402

本文標題取為:qmake下使用一例(以log4qt為例)

可能會更好一點。想想還是就這樣吧。

不少人使用第三方庫時都是:

找出必要的檔案

然後新增進自己的工程

一般來說,我們可以將所有和這個庫有關的東西放置到乙個liblog4qt.pri這樣的檔案中,然後在需要使用的工程中直接包含這個檔案即可:

比如:我們先看看,上一節中我所寫例子所用的pro檔案:

include(../../liblog4qt.pri)

config += console

destdir = $$project_bindir

sources += main.cpp

有一點不同:這個檔案背後,使用的不是直接包含檔案,而是動態庫。這也是本文的內容。

可以採用下面三種方式來使用qextserialport:

靜態庫動態庫

直接包含原始檔

不管使用哪種方式,使用時只需要在工程檔案內新增

include(pathtopri/qextserialport.pri)

或許應該考慮將log4qt也改造成這種使用方式

乙個簡單的包含動態庫且又使用第三方庫的qt程式,應該都可以這樣來組織工程結構:

+ 

|-- myproject.pro

| |-- hello.pro

| `-- main.cpp

|-- liba\

| |-- liba.pro

| |-- liba.pri

| `-- main.cpp

|-- libb\

| |-- libb.pro

| |-- libb.pri

| `-- main.cpp

...|-- liblog4qt

| |-- liblog4qt.pro

| `-- liblog4qt.pri

|`-- 3rdparty\

|-- log4qt\

| `....

|-- qextserialport\

|-- `....

所有的第三方**放置到3rdparty下。程式由乙個可執行程式和若干個動態鏈結庫構成(此處忽略了文件doc和單元測試tests相關的目錄)

最終目的是:

由於程式中包含很多動態庫,而幾乎每個動態庫都需要使用log功能,此時直接包含log4qt的原始碼或者使用靜態庫都不是太好的注意。所以:使用動態庫

其實只要寫好工程檔案,使用動態庫也很簡單:

建立liblog4qt.pro

用來構建動態庫

可以單獨存在,也可以被上級的pro檔案所包含(通過subdir)

建立liblog4qt.pri

用來構建和使用動態庫

任何需要使用log工程的pro檔案,只需要include該檔案即可

不過這兩個檔案,乍看起來,可能會讓人比較頭大:(但如果所有的動態庫都是這麼弄,倒是很簡單了)

一開始定義幾個變數:

我們的庫檔案準備放置到的路徑(所有的動態庫都需要這個,放置到單獨乙個common.pri中更好)

庫檔案的名字(使用了qtlibrarytarget,這樣在windows下debug和release自動擁有不同的名字,而且對我們是透明的,因為我們只在這乙個檔案內指定庫檔案的名字。)

log4qtsrcpath = $$pwd/../3rdparty/log4qt/src

project_libdir = $$pwd/../lib

project_bindir = $$pwd/../bin

template += fakelib

liblog4qt_name = $$qtlibrarytarget(hlog4qt)

template -= fakelib

includepath += $$log4qtsrcpath

dependpath += $$log4qtsrcpath

!log4qt-buildlibelse

無論是使用,還是構建動態庫,我們都使用這個檔案。

這個檔案中沒有任何新東西,就是構建乙個動態庫

template = lib

config += log4qt-buildlib

qt += core xml network

include(liblog4qt.pri)

target = $$liblog4qt_name

destdir = $$project_libdir

win32.dll

}config += debug_and_release build_all

log4qt_version_major = 1

log4qt_version_minor = 0

log4qt_version_release = 0

log4qt_version = '\\"$$.$$.$$\\"'

defines += log4qt_version_str=\"$$\"

defines += log4qt_version=$$

version = 1.0.0

dependpath += src src/helpers src/spisrc/ varia

includepath += src src/helpers src/spi src/varia

Log4Qt使用筆記 三

在前面,我們提到,除了乙個根root之外,還可以有多個命名的logger存在,為了直觀,我們可以看logmanager的成員函式 奇怪,除了我們提到的,還有qtlogger和loglogger兩個東西存在,這兩個是什麼東西?原來 馬甲 真實身份 作用qtlogger logger qt 用來處理qt...

Log4Qt 使用筆記 一

沒用過log4j和log4cxx,初次接觸log4qt,還真有點頭昏腦脹,無論如何,先簡單記錄一下。log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的 因為log4qt的直接資料太少了 log4qt主要是用來記錄日誌 有助於程式除錯 有3個主要的元件 l...

Log4Qt 使用筆記 一

log4qt log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的 因為log4qt的直接資料太少了 log4qt主要是用來記錄日誌 有助於程式除錯 有3個主要的元件 16 0x00a56708 debug root hello dbzhang800 16...