在 Qt 6.4.0 中,我們可以使用這樣的代碼來包含 qt 組件:
#include <QtCore/qchar.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qbytearrayview.h>
#include <QtWidgets/qtwidgetsglobal.h>
但我發現那些 .h 檔案的真實路徑不在這樣的檔案夾下,例如QtCore,QtWidgets等等,實際上大部分都在這樣的目錄下:
/Users/tony/Qt/6.4.0/macos/lib/QtXXX.framework/Headers/qtxxx.h
我想知道,因為QtCore這不是真正的路徑,但是Headers,我們不應該寫#include "Headers/qtxxx.h"嗎?#include <QtCore/qchar.h>這樣的路徑如何運作?
uj5u.com熱心網友回復:
使用-I引數
您必須告訴編譯器要包含哪個目錄才能正確找到標頭。例如,在 clang 和 gcc 中,您可以使用此目錄作為-I引數,如下所示:
clang yourprogram.cpp -I /Users/tony/Qt/6.4.0/macos/lib/QtXXX.framework/Headers/
在您的源代碼中,您將以這種方式撰寫包含:
#include "QtCore/qchar.h"
#include "QtCore/qbytearray.h"
#include "QtCore/qbytearrayview.h"
#include "QtWidgets/qtwidgetsglobal.h"
請注意,它使用" "了< >,這意味著您正在查找相對于您的編譯選項而不是您的系統的包含檔案。
雖然這可行,但建議使用專案的相對路徑來指向標頭目錄。
uj5u.com熱心網友回復:
已解決:此現象僅在 MacOS 上出現,因為 MacOS 使用“框架”來組織一組 lib 和 headers,可以通過 clang-module 名稱決議到 realpath。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/513279.html
標籤:C 苹果系统qt汇编
