本文標題取為: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/srcproject_libdir = $$pwd/../lib
project_bindir = $$pwd/../bin
template += fakelib
liblog4qt_name = $$qtlibrarytarget(hlog4qt)
template -= fakelib
includepath += $$log4qtsrcpath
dependpath += $$log4qtsrcpath
!log4qt-buildlibelse
無論是使用,還是構建動態庫,我們都使用這個檔案。
這個檔案中沒有任何新東西,就是構建乙個動態庫
template = libconfig += 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...