天天看點

在Windows和macOS平台,自主編譯Qt Creator和Qt Designer源碼

Qt Creator和Qt Designer都是很好的開源項目,利于學習提升。

一、官方源碼下載下傳

1、官方github源碼

https://github.com/qt-creator/qt-creator

Qt Creator源碼

https://github.com/qt-creator/qt-creator/tree/master/src/plugins/designer

Qt Creator的設計師插件

https://github.com/qt/qtbase

Qt核心類源碼

https://github.com/qt/qttools

Qt工具類源碼

https://github.com/qt/qttools/tree/dev/src/designer

Qt設計師的源碼

https://github.com/qt/qttools/tree/dev/src/windeployqt

依賴庫工具源碼

2、官方正式發行網站【推薦這裡下載下傳】

qt-creator-opensource-src-4.12.4.zip,解壓縮qt-creator-opensource-src-4.12.4.zip,裡面有README.md,有詳細的編譯說明。

http://download.qt.io/official_releases/qtcreator/4.12/4.12.4/

qttools-everywhere-src-5.12.9.zip,裡面有Qt設計師的源碼。

http://download.qt.io/official_releases/qt/5.12/5.12.9/submodules/

二、筆者電腦的環境

1、Windows

Win7+Qt 5.12.9+Qt Creator 4.12+MSVC 2017 64bit+Python 3.7+ActivePerl-5.28 x64

2、MacOS-10.15-Catalina

MacOS 10.15.4+Qt 5.12.9+Qt Creator 4.12+Clang 11.0 x64+Python 3.7+Xcode 11.4

Mac終端指令sw_vers可以檢視Mac OS版本

Mac終端指令clang --version可以檢視clang版本

三、編譯

Qt Creator IDE分别打開源碼檔案夾的qtcreator.pro和qttools.pro檔案

qt-creator-opensource-src-4.12.4

qttools-everywhere-src-5.12.9

qt-creator-opensource-src直接編譯即可,成功通過。

qttools-everywhere-src有少部分項目不支援debug編譯,會報錯,因為官網提供的Qt5Bootstrap.lib沒有debug版本;

此外如果電腦沒有安裝vulkan-sdk,也會報錯,無法打開包括檔案: “vulkan/vulkan.h”

error: dependent 'F:\Qt\Qt5.12.9\5.12.9\msvc2017_64\lib\Qt5Bootstrapd.lib' does not exist.

F:\Qt\Qt5.12.9\5.12.9\msvc2017_64\include\QtGui\qvulkaninstance.h:55: error: C1083: 無法打開包括檔案: “vulkan/vulkan.h”: No such file or directory

解決辦法:

把\qttools-everywhere-src-5.12.9\src\src.pro去掉相應的子項目即可

macdeployqt

qdoc

qtdiag

windeployqt

winrtrunner

src.pro檔案,去掉以上子產品,加注釋"#":

#qtConfig(qdoc): qtConfig(thread): SUBDIRS += qdoc

!android|android_app: SUBDIRS += qtpaths

macos {

#    SUBDIRS += macdeployqt

}

qtHaveModule(dbus): SUBDIRS += qdbus

#win32|winrt:SUBDIRS += windeployqt

#winrt:SUBDIRS += winrtrunner

#qtHaveModule(gui):!wasm:!android:!uikit:!qnx:!winrt: SUBDIRS += qtdiag

或者更徹底一點,把其他項目全部去掉,僅留下designer,

qttools-everywhere-src-5.12.9\qttools.pro檔案修改為:

TEMPLATE = subdirs

CONFIG += ordered

SUBDIRS += \

   src \

qttools-everywhere-src-5.12.9\src\src.pro檔案修改為:

SUBDIRS = designer

2、macOS

qttools-everywhere-src直接編譯即可,成功通過。

注意事項

qt-creator-4.12.x新版本引入了開源項目advanceddockingsystem

開源項目:

https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System

在qtcreator的源碼路徑是:qt-creator-opensource-src-4.12.4\src\libs\advanceddockingsystem

編譯之前,需要把源檔案和頭檔案的編碼修改為utf8+bom

附錄1

build-qtcreator-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug\src\app\app_version.h

#pragma once
namespace Core {
namespace Constants {
#define STRINGIFY_INTERNAL(x) #x
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
const char IDE_DISPLAY_NAME[] = "Qt Creator";
const char IDE_ID[] = "qtcreator";
const char IDE_CASED_ID[] = "QtCreator";
#define IDE_VERSION 4.12.4
#define IDE_VERSION_STR STRINGIFY(IDE_VERSION)
#define IDE_VERSION_DISPLAY_DEF 4.12.4
#define IDE_VERSION_MAJOR 4
#define IDE_VERSION_MINOR 12
#define IDE_VERSION_RELEASE 4
const char * const IDE_VERSION_LONG      = IDE_VERSION_STR;
const char * const IDE_VERSION_DISPLAY   = STRINGIFY(IDE_VERSION_DISPLAY_DEF);
const char * const IDE_AUTHOR            = "The Qt Company Ltd";
const char * const IDE_YEAR              = "2020";
#ifdef IDE_REVISION
const char * const IDE_REVISION_STR      = STRINGIFY(IDE_REVISION);
#else
const char * const IDE_REVISION_STR      = "";
#endif
// changes the path where the settings are saved to
#ifdef IDE_SETTINGSVARIANT
const char * const IDE_SETTINGSVARIANT_STR      = STRINGIFY(IDE_SETTINGSVARIANT);
#else
const char * const IDE_SETTINGSVARIANT_STR      = "QtProject";
#endif
#ifdef IDE_COPY_SETTINGS_FROM_VARIANT
const char * const IDE_COPY_SETTINGS_FROM_VARIANT_STR = STRINGIFY(IDE_COPY_SETTINGS_FROM_VARIANT);
#else
const char * const IDE_COPY_SETTINGS_FROM_VARIANT_STR = "";
#endif
#undef IDE_VERSION_DISPLAY_DEF
#undef IDE_VERSION
#undef IDE_VERSION_STR
#undef STRINGIFY
#undef STRINGIFY_INTERNAL
} // Constants
} // Core      

繼續閱讀