Qt 工程中 UI 文件在 Makefile 中的處理

Qt 工程中 UI 文件在 Makefile 中的處理

在 Qt 工程中,.ui 文件(Qt Designer 界面文件)需要通過 uic(用戶界面編譯器)工具轉換為對應的頭文件。以下是幾種情況下如何處理 UI 文件:1. 使用 qmake 自動生成 Makefile
對于大多數 Qt 項目,推薦使用 qmake 自動生成 Makefile:bash
qmake -o Makefile project.pro
在 .pro 文件中只需包含 UI 文件,qmake 會自動處理:qmake
FORMS += mainwindow.ui dialog.ui
qmake 會自動在生成的 Makefile 中添加適當的規則來編譯 UI 文件。2. 手動編寫 Makefile 處理 UI 文件
如果需要手動編寫 Makefile,可以這樣處理 UI 文件:makefile
# 定義 UI 文件
UI_FILES = mainwindow.ui dialog.ui# 生成對應的 ui_*.h 文件
UI_HEADERS = $(UI_FILES:.ui=.h)# 默認目標
all: $(UI_HEADERS) $(OBJECTS)$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)# 規則:從 .ui 生成 .h
%.h: %.ui$(UIC) $< -o ui_$@clean:rm -f $(UI_HEADERS) $(OBJECTS) $(TARGET)
3. 使用 CMake 處理 UI 文件
如果使用 CMake 構建系統:cmake
qt_wrap_ui(myapp_ui_headers mainwindow.ui dialog.ui)
add_executable(myapp ${SOURCES} ${myapp_ui_headers})
4. 完整手動 Makefile 示例
makefile
# 編譯器設置
CXX = g++
UIC = uic
MOC = moc# 文件列表
SOURCES = main.cpp mainwindow.cpp
HEADERS = mainwindow.h
UI_FILES = mainwindow.ui# 自動生成的文件
UI_HEADERS = $(UI_FILES:.ui=.h)
MOC_SOURCES = $(HEADERS:.h=.moc.cpp)# 最終目標
TARGET = myapp# 編譯選項
CXXFLAGS = -I. -fPIC
LDFLAGS = -lQt5Widgets -lQt5Core -lQt5Guiall: $(TARGET)# 主目標鏈接
$(TARGET): $(SOURCES) $(UI_HEADERS) $(MOC_SOURCES)$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)# UI 編譯規則
ui_%.h: %.ui$(UIC) $< -o $@# MOC 編譯規則
%.moc.cpp: %.h$(MOC) $< -o $@clean:rm -f $(TARGET) $(UI_HEADERS) $(MOC_SOURCES) *.o.PHONY: all clean
注意事項
自動生成 vs 手動編寫:強烈建議使用 qmake 或 CMake 自動生成構建系統,而不是手動維護 Makefile文件命名:Qt 通常生成 ui_*.h 格式的文件(如 ui_mainwindow.h)包含路徑:確保生成的 UI 頭文件在包含路徑中依賴關系:手動編寫時需要正確處理 UI 文件與源代碼之間的依賴關系Qt 模塊:鏈接時確保包含必要的 Qt 模塊(Widgets、Core、Gui 等)對于新項目,建議使用 CMake 作為構建系統,因為它對 Qt 的支持越來越好,并且是 Qt 官方推薦的現代構建系統。

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

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

相關文章

ZLMediaKit性能測試

一、環境 系統&#xff1a;虛擬機 Ubuntu22.04 64bit配置: 4核8G設置&#xff1a;ulimit -n 102400 二、安裝 依賴安裝sudo apt update sudo apt install ffmpeg sudo apt install nloadzlm服務安裝參考&#xff1a;https://blog.csdn.net/hanbo622/article/details/149064939?…

智能文檔處理業務,應該選擇大模型還是OCR專用小模型?

智能文檔處理業務中&#xff0c;最佳策略不是二選一&#xff0c;而是“大小模型協同”。用專用小模型處理高頻、標準化的核心文檔流&#xff0c;實現極致效率與成本控制&#xff1b;用大模型賦能非標、長尾文檔的靈活處理&#xff0c;加速業務創新。 OCR小模型會被大模型取代嗎…

android 如何判定底部導航欄顯示時 不是鍵盤顯示

在 Android 中判定底部導航欄是否顯示時&#xff0c;核心痛點是 區分 “導航欄的底部 Insets” 和 “軟鍵盤彈出的底部 Insets”—— 兩者都會導致 getSystemWindowInsetBottom() 返回非零值&#xff0c;直接判斷會誤將鍵盤彈出當成導航欄顯示。以下是基于 WindowInsets 類型區…

你知道服務器和電腦主機的區別嗎?

我們都知道服務器和臺式主機有著不同之處&#xff0c;但具體說出個一二三來很多人還是一頭霧水&#xff0c;也就是知其然不知其所以然&#xff0c;都是CPU主板 內存 硬盤 電源&#xff0c;撐死就差一個顯卡不同&#xff0c;但其實服務器和我們正常使用的臺式主機差距很大&#…

什么是包裝類

什么是包裝類 在Java中&#xff0c;包裝類&#xff08;Wrapper Class&#xff09;是為基本數據類型提供的對應的引用類型。Java中的基本數據類型&#xff08;如int、char、boolean等&#xff09;不是對象&#xff0c;為了在需要對象的場景中使用基本數據類型&#xff08;如集合…

用Python打造專業級老照片修復工具:讓時光倒流的數字魔法

在這個數字化時代&#xff0c;我們手中珍藏著許多泛黃、模糊、甚至有劃痕的老照片。這些照片承載著珍貴的回憶&#xff0c;但時間的侵蝕讓它們失去了往日的光彩。今天&#xff0c;我將帶您一起用Python開發一個專業級的老照片修復工具&#xff0c;讓這些珍貴的記憶重現光彩。為…

linux中查找包含xxx內容的文件

linux中怎么查找哪個文件包含xxx內容 在Linux中查找包含特定內容的文件 在Linux系統中&#xff0c;有幾種常用方法來查找包含特定內容的文件。以下是幾種最有效的方法&#xff1a;1. 使用 grep 命令&#xff08;最常用&#xff09; 基本語法&#xff1a;bash grep -r "搜索…

sklearn 加州房價數據集 fetch_california_housing 出錯 403: Forbidden 修復方案

問題 加載加州房價數據時出現 403 錯誤 HTTP Error 403: Forbidden from sklearn.datasets import fetch_california_housingcalifornia fetch_california_housing() print(california.target.shape) 解決方案 運行下述代碼&#xff0c;然后再運行上述的 fetch_california_hou…

嵌入式學習---(硬件)

1、在LED實驗中&#xff0c;在對Soc引腳配置時都做了哪些工作&#xff1f;復用功能配置操作寄存器&#xff1a;IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03將引腳的低 4 位設置為 0101&#xff0c;將引腳復用為 GPIO 功能電氣特性配置操作寄存器&#xff1a;IOMUXC_SW_PAD_CTL_PAD_GPIO1…

微信小程序開發教程(十一)

目錄&#xff1a;1.上拉觸底案例-初步實現上拉觸底效果2.上拉觸底案例-添加loading效果3.上拉觸底案例-節流處理4.擴展-自定義編譯模式1.上拉觸底案例-初步實現上拉觸底效果頁面加載的時候調用這個方法&#xff1a;設置樣式&#xff1a;下拉觸底后繼續調用獲取顏色的方法2.上拉…

Android相機API2,基于GLSurfaceView+SurfaceTexture實現相機預覽,集成的相機算法采用GPU方案,簡要說明

Android相機API2&#xff0c;基于GLSurfaceViewSurfaceTexture實現相機預覽&#xff0c;集成的相機算法采用GPU方案&#xff0c;簡要流程如下(不疊加相機算法的預覽顯示流程也大體如此&#xff0c;只是去掉了算法部分)&#xff1a;進入相機&#xff1a;1&#xff0c;新建實現了…

[code-review] 日志機制 | `LOG_LEVEL`

第6章&#xff1a;日志機制&#xff08;調試&#xff09; 歡迎來到我們了解ChatGPT-CodeReview項目的最后一章 在第5章&#xff1a;文件過濾邏輯&#xff08;范圍管理器&#xff09;中&#xff0c;我們學習了機器人如何智能地決定哪些文件需要發送給AI審查。 但一旦機器人開…

n8n工作流平臺入門學習指南

目錄 1、基礎背景 2、核心概念 2.1 節點(Nodes) 2.2 連接(Connections) 2.3 工作流(Workflows) 3、常用節點說明 4、基于Docker快速部署 5、學習資料 6、常見問題 強烈推薦&#xff0c;大家不懂的直接問&#xff1a;N8N大師&#xff08;GPT&#xff09;&#xff0c;科…

【Oracle經驗分享】字符串拼接過長問題的解決方案 —— 巧用 XMLAGG

&#x1f4d1; 目錄&#x1f50d; 問題背景?? 常見拼接方式的限制&#x1f4a1; XMLAGG 的解決方案&#x1f4dd; 示例代碼&#x1f4cc; 注意事項? 總結&#x1f50d; 問題背景在日常開發中&#xff0c;我們經常需要把多行數據拼接成一個字符串。例如將某個字段的多條記錄拼…

AJAX入門-URL、參數查詢、案例查詢

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在VS code中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。 HTML、CSS、JavaScript系列文章 已經收錄在前端專欄&#xff0c;有需要的寶寶們可以點擊前端專欄查…

【SpringBoot】24 核心功能 - Web開發原理 -Spring Boot 異常處理機制

前言 在開發 Web 應用程序時&#xff0c;異常處理是一個至關重要的部分。Spring Boot 提供了一套強大的異常處理機制&#xff0c;使得開發者能夠輕松地處理和響應各種異常情況。本文將深入探討 Spring Boot 中的異常處理機制&#xff0c;包括默認的錯誤處理規則、定制錯誤處理邏…

JVM第一部分

PC寄存器&#xff1a;存儲的是數字 0, 3, 6, 10, 17 這樣的字節碼偏移量。 LineNumberTable&#xff1a;是一個映射表&#xff0c;它將上述的偏移量“翻譯”成我們程序員能看懂的源代碼行號。 JVM堆 JVM堆由兩部分組成&#xff1a;年輕代老年代 年輕代包括三部分&#xff1a;ed…

IDEA使用Maven和MyBatis簡化數據庫連接(配置篇)

目錄&#xff1a; Maven:簡化項目構建 MyBatis:簡化Jdbc Maven&#xff1a;是一款項目構建與依賴管理工具&#xff0c;核心作用是自動化項目編譯、打包等流程&#xff0c;并統一管理項目所需的第三方 Jar 包&#xff08;如 MyBatis 的 Jar 包&#xff09;。 MyBatis&#xf…

Java 泛型詳解:從基礎到高級應用

目錄 一、泛型的基本概念 為什么需要泛型&#xff1f; 二、泛型類與泛型接口 【1】定義泛型類 【2】定義泛型接口 三、泛型方法 四、泛型通配符 【1】無界通配符&#xff08;?&#xff09; 【2】上界通配符&#xff08;? extends T&#xff09; 【3】下界通配符&am…

嵌入式 Linux 啟動機制全解析:從 Boot 到 Rootfs

&#x1f680; 嵌入式 Linux 啟動機制全解析&#xff1a;從 Boot 到 Rootfs 在嵌入式系統中&#xff0c;Linux 的啟動流程不僅是內核加載的過程&#xff0c;更是 bootloader、設備樹、初始根文件系統、啟動配置文件等多個組件協同工作的結果。不同的文件系統和啟動方式會影響系…