在pro文件裏寫”QT+=widgets”表示引入QtWidget這個module,qmake在生成makefile的時候,會設置好include path 和 lib path,在link時候設置好libs。
QT += widgets包括兩部分:
1:Lib,這個是lib的路徑和lib文件的文件名。
2:include , *.h的路徑在pro文件裏設置,.h的文件名用代碼裏的#include設定
QT += widgets 貌似可以分開寫成(大致是這樣):
INCLUDE+= 一串路徑 (因爲文件名都在代碼裏以include形式出現,所以這裏沒必要出現文件名)
LIB+=一串路徑 + -l文件名 + -l文件名。。。。
而若僅在源代碼裏 include <QApplication>僅是引入聲明,但是沒有lib,所以鏈接時會出錯。
這是由於C++頭文件和lib分離的這種設計模式造成的,現代語言基本都採用package管理,用import解決了。
*************************************************************
在pro裏 寫 qt+=widgets 表示引入 QtWidget這個module,qmake會在幫你生成makefile的時候,設置好include path 和 lib path,在link時候設置好libs。
而僅在源代碼裏 include <QApplication>僅是引入聲明,但是沒有lib,所以鏈接時會出錯。
當然,我們可以批評C++這種源自上世紀70年代的頭文件和lib分離的設計是過時的不合理的,現代語言基本都採用package管理,用import解決了。
但是我們既然還在用C++,就要接受這種設計,把它搞明白。
另外你說在網上找不到資料,我大膽猜測你是用baidu搜索的,因爲用google搜索,這類資料是很多的,比如
The compiler, assembler, linker, loader and process address space tutorial
圖文並茂地講述了編譯器 鏈接器和加載器的工作原理。