深入理解Qt的.pro文件

  • 深入理解Qt的pro文件
    • 模板變量
    • 生成目錄
    • 生成的應用程序名
    • 編譯選項
    • 目標文件目錄
    • 包含頭文件
    • 包含源文件
    • 包含資源文件
    • 附加頭文件包含
    • 鏈接庫
    • 預編譯宏
    • 平臺相關性處理
    • 指定來自ui文件位置
    • 指定界面翻譯文本列表
    • 指定圖標

深入理解Qt的.pro文件

一般Qt項目我們是使用Qt Creator自動生成的,如果是沒有.pro的項目,可以使用qmake project來生成。

在一般的.pro里已經包含了幾個基本的選項,如TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等選項,下面我們細講。

模板變量

TEMPLATE = app
  • app 表示該工程建立一個應用程序的makefile。這是默認值,所以如果模板沒有被指定,這個將被使用
  • lib 表示該工程建立一個庫的makefile

生成目錄

指定生成的可執行程序的目錄,可以絕對路徑和相對路徑。

DESTDIR += ../bin

生成的應用程序名

程序名即軟件名稱

TARGET = 3DAOI

編譯選項

增添后者移除某個模塊。

例如增添c++11和console模塊的支持,Qt的各模塊也在這里添加

CONFIG += console c++11 network
CONFIG -= qt

可以用空格分隔或者“\”來隔行。

如果是一些比較特殊的Qt模塊需要使用用以下方式加載:

QT += qml quick
QT += quick quickcontrols2

目標文件目錄

obj文件存放的目錄,也就是.o文件的生成路徑,可以絕對路徑或者相對路徑。

OBJECTS_DIR += ../tmp

補充
- MOC_DIR 指定moc文件生成路徑
- UI_DIR 指定ui文件生成路徑

包含頭文件

表示本項目中頭文件。

HEADERS += \
libcurl/curl/curl.h\
libcurl/curl/curlbuild.h

只要Qt Creator目錄樹中add進去了就會自動追加到.pro文件中。

包含源文件

表示本項目中的源文件

SOURCES += main.cpp\
json.cpp

只要Qt Creator目錄樹里add進去了就會自動追加到.pro文件中。

包含資源文件

表示本項目包含的資源文件。

RESOURCES += qrc/painter.qrc

qrc文件格式類似如下:

<RCC><qresource prefix="/"><file>Chapter1/0_hello.qml</file><file>Chapter1/1_object_expression.qml</file></qresource>
</RCC>

只要Qt Creator目錄樹里add進去了就會自定追加,更改.pro文件會同步更新Qt Creator里的目錄樹,但不會影響硬盤上的自愿文件。

附加頭文件包含

一般要編譯鏈接第三方庫時配置include目錄。
例如

INCLUDEPATH += ./boost/include\
src/thirdpart/includeINCLUDEPATH += D:/boost/include\
E:/cocos2dx/include

注意

  • 可以用絕對路徑或相對路徑
  • 相對路徑中./可以省略
  • 路徑中不允許出現空格

鏈接庫

對于靜態庫(.a)以及動態庫(.so)。

LIBS += -LD:/codetest/libcurlcpp/libcurl/lib/-llibcurl\
-LD:/codetest/libcurlcpp/libcurl/lib/-lws2_32\
-LD:/codetest/libcurlcpp/libcurl/lib/-lwldap32\
-LD:/codetest/libcurlcpp/libcurl/lib/-lopencv.so\
-LD:/codetest/libcurlcpp/libcurl/lib/-llibzmq.a

或者:

LIBS += D:/codetest/libcurlcpp/libcurl/lib/libcurl.lib\
D:/codetest/libcurlcpp/libcurl/lib/ws2_32.lib\
D:/codetest/libcurlcpp/libcurl/lib/wldap32.lib
D:/codetest/libcurlcpp/libcurl/lib/opencv.so\
D:/codetest/libcurlcpp/libcurl/lib/opencv.a

再或者:

LIBS += $$PWD/libcurl/lib/libcurl.lib\
$$PWD/libcurl/lib/ws2_32.lib\
$$PWD/libcurl/lib/wldap32.lib
  1. 可以用-L指定目錄,-l指定庫的名稱(無需后綴,.lib, .a,.so都適用),注意-l后面沒有空格
  2. 可以直接通過絕對路徑和相對路徑指定庫的完成path(需后綴, .lib, .a, .so都試用), 相對路徑用$$PWD前綴,路徑不允許有空格。
  3. LIBS += somepath這個可以寫多行,也可以使用”\”隔行

注意:
對于動態庫dll文件,必須拷貝到exe執行目錄或者在環境變量里配置路徑才可以。

預編譯宏

DEFINES += USE_OPENSSL\
CURL_STATICLIB

類似于vs里面在工程里設置預編譯選項 ,這個使用時自行google。

平臺相關性處理

根據qmake所運行的平臺來使用相應的作用域來進行處理。

win32
{
SOURCES += 1.cpp
}else{
SOURCES += 2.cpp
}

根據平臺進行條件編譯。

指定來自ui文件位置

這個我們不需要。

unix:UI_DIR = ../project/ui
win32:UI_DIR = D:/project/ui

指定界面翻譯文本列表

翻譯用戶界面時需要用到。

TRANSLATIONS += Resource/myapp_zh.ts \Resource/myapp_en.ts

指定圖標

如果RC_FILE 和RES_FILE變量都沒有設置這才可利用

RC_ICONS = logo.ico

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536155.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu 用vsftpd 配置FTP服務器

最近開學&#xff0c;有好多課程結束后都需要將文件考到優盤里&#xff0c;而本人又有健忘的毛病&#xff0c;經常忘記帶優盤&#xff0c;所以就搭建了自己的ftp服務器&#xff0c;也算是用技術放松自己吧。閑話少敘&#xff0c;進入正題&#xff1a; 網上關于ftp搭建的文章很…

linux的程序打包deb

deb安裝包 deb是Unix系統(其實主要是Linux)下的安裝包&#xff0c;基于 tar 包&#xff0c;因此本身會記錄文件的權限(讀/寫/可執行)以及所有者/用戶組。 由于 Unix 類系統對權限、所有者、組的嚴格要求&#xff0c;而 deb 格式安裝包又經常會涉及到系統比較底層的操作&#…

利用pyinstaller打包python3程序

pyInstaller是一款用于將pyhon程序打包成exe文件的工具&#xff0c;pyInstaller不是一個python的包&#xff0c; 只需要把pyInstaller的文件下載下來放到任意為止都可以&#xff0c;也就是說pyInstaller相當于獨立出來專門干打包python的工具&#xff0c;這貨是工具不是庫&…

C++11新特性之左值右值及移動語句與完美轉發

C左值右值左值和右值的由來什么是左值和右值左值右值的本質引用左值引用右值引用 移動語句與完美轉發移動語句實現移動構造函數和轉移賦值函數stdmove完美轉發Perfect Forwarding C左值右值 自從C11發布之后&#xff0c;出現了一個新的概念&#xff0c;即左值和右值&#xf…

nginx中的nginx.conf.default配置

#運行用戶 user nobody; #啟動進程,通常設置成和cpu的數量相等 worker_processes 1;#全局錯誤日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及連接數上限 events {…

C++11新特性之泛型編程與模板

模板泛型編程函數模板普通函數模板成員函數模板函數模板重載模板函數的特化 類模板類模板中的成員函數模板類模板的特化與偏特化類模板成員特化 模板 Template所代表的泛型編程是C語言中的重要組成部分。 泛型編程 泛型編程&#xff08;Generic Programming&#xff09;是…

WordPress更改“固定鏈接”后 頁面404原因及解決方法(Nginx版)

網上盛傳的方法是&#xff1a; 在 /etc/nginx/nginx.conf文件的 loction / {} 中添加 if (-f $request_filename/index.html){rewrite (.*) $1/index.html break; }if (-f $request_filename/index.php){rewrite (.*) $1/index.php; }if (!-f $request_filename){rewrite (.*…

C++類型萃取之type_traits和type_info

類型萃取類型判斷typeiddecltype和declvalenable_if 類型萃取 通過type_traits可以實現在編譯期計算、查詢、判斷、轉換和選擇&#xff0c;增強了泛型編程的能力&#xff0c;也增強了我們程序的彈性&#xff0c;讓我們能夠在編譯期就能夠優化改進甚至排錯&#xff0c;進一步提…

使用Phpstorm實現遠程開發

Phpstorm除了能直接打開本地文件之外&#xff0c;還可以連接FTP&#xff0c;除了完成正常的數據傳遞任務之外&#xff0c;還可以進行本地文件與服務端文件的異同比較&#xff0c;同一文件自動匹配目錄上傳&#xff0c;下載&#xff0c;這些功能是平常IDE&#xff0c;FTP軟件中少…

什么是遞歸函數?

文章目錄遞歸函數遞歸例題特點效率優點遞歸函數 遞歸 遞歸就是一個函數在它的函數體內調用它自身。執行遞歸函數將反復調用其自身&#xff0c;每調用一次就進入新的一層。遞歸函數必須有結束條件。 當函數在一直遞推&#xff0c;直到遇到墻后返回&#xff0c;這個墻就是結束條…

apache ab壓力測試報錯

今天用apache 自帶的ab工具測試&#xff0c;當并發量達到1000多的時候報錯如下&#xff1a; [rootaa~]# This is ApacheBench, Version 2.3 <Revision:655654> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Sof…

ngOnInit與constructor的區別

前世今生 Angular會管理一個組件的生命周期,包括組件的創建、渲染、子組件創建與渲染、當數據綁定屬性變化時的校驗、DOM移除之前毀銷。 Angular提供組件生命周期鉤子便于我們在某些關鍵點發生時添加操作。 組件生命周期鉤子 指令和組件實例有個生命周期用于創建、更新和銷…

Nginx配置性能優化

大多數的Nginx安裝指南告訴你如下基礎知識——通過apt-get安裝&#xff0c;修改這里或那里的幾行配置&#xff0c;好了&#xff0c;你已經有了一個Web服務器了。而且&#xff0c;在大多數情況下&#xff0c;一個常規安裝的nginx對你的網站來說已經能很好地工作了。然而&#xf…

Angular的@Output與@Input理解

@Output與@Input理解 Output和Input是兩個裝飾器,是Angular2專門用來實現跨組件通訊,雙向綁定等操作所用的。 @Input Component本身是一種支持 nest 的結構,Child和Parent之間,如果Parent需要把數據傳輸給child并在child自己的頁面中顯示,則需要在Child的對應 directiv…

騰訊云CDN配置

第一步&#xff1a;先去領取騰訊云CDN免費包23333333 以下為正式步驟&#xff1a; 在這里體現大家&#xff0c;域名一定要備案&#xff0c;另外要明白域名如何解析 前邊問題不大&#xff0c;一切跟著騰訊云的套路來即可&#xff0c;需要注意的是網上后優化的配置大家可以自行…

Promise.all的深入理解

異步之Promise Promise.all Promise.all接收的promise數組是按順序執行的還是一起執行的&#xff0c;也就是說返回的結果是順序固定的嗎&#xff1f; 目前有兩種答案&#xff1a; 應該是同步執行的&#xff0c;但是這樣就有效率問題了&#xff0c;如果想改成異步執行怎么辦…

wordpress后臺無法登錄問題

之前給自己的WordPress加了個標簽云&#xff0c;今天登錄的時候突然發現網站后臺進不去了&#xff0c;無奈各種找材料&#xff0c;這算是皇天不負有心人&#xff0c;總算是給我找到了&#xff0c;現在做一下記錄 登錄不上的原因在于&#xff1a;wp-admin和wp-admin/是不同的&a…

深入理解Angular訂閱者模式

深入理解Angular訂閱者模式 如果正在讀此篇文章的你學過java,c++等面向對象語言,知道兩個模式觀察者模式和訂閱者模式,分別為:Observer pattern,Pub-sub pattern(Subscriber) 接下來我們結合Angular來說明這兩個模式。 Observer pattern This is a pattern of developme…

Ubuntu中安裝python3

通過命令行安裝Python3.*&#xff0c;只需要在終端中通過命令行安裝即可&#xff1a; sudo apt-get install python3 Ubuntu的底層大多數采用的是Python2.*&#xff0c;Python3和Python2是互相不兼容的&#xff0c;完全沒法通用的&#xff08;也不知道他們怎么想的o(TヘTo)&a…

Angular深入理解之指令

Angular深入理解之指令 指令有什么功能 Attribute directives 屬性指令Structural directives 結構指令自定義屬性指令自定義結構指令Angular深入理解之指令 對于初學Angular的同學來說,指令無疑是最痛苦的,那么我們怎么使用自定義的指令呢?指令到底怎么實現呢?為什么要寫…