qt creator原始碼全方面分析 3 3

2022-07-25 15:42:31 字數 3524 閱讀 9074

目錄小節

此pri檔案用於部署在構建qt creator時未編譯的檔案。如果使用影子構建,它將檔案複製到構建目錄中,同時新增相應的安裝目標。

用法:首先定義變數(詳細資訊如下),然後包含此pri檔案。

static_base:static_files中列出的檔案的基礎目錄

static_files:要部署的檔案列表

static_output_base:編譯輸出的基礎目錄

static_install_base:安裝輸出的基礎目錄

函式如下:

# used in custom compilers which just copy files

definereplace(stripstaticbase)

函式很簡單,返回函式引數相對於static_base的相對路徑。注釋也很明白,在僅複製檔案的自定義編譯器中使用。

接下來是

# handle conditional copying based on static_base compared to static_output_base

!isempty(static_files)

isempty(vcproj):copy2build.variable_out = pre_targetdeps

win32:copy2build.commands = $$qmake_copy \"$\" \"$\"

unix:copy2build.commands = $$qmake_copy $ $

copy2build.name = copy $

copy2build.config += no_link

qmake_extra_compilers += copy2build

}static.files = $$static_files

static.base = $$static_base

static.path = $$static_install_base

installs += static

}

指定額外編譯器或預處理器的列表。

另請參閱adding compilers。

可以自定義qmake以支援新的編譯器和預處理器:

new_moc.output  = moc_$.cpp

new_moc.commands = moc $ -o $

new_moc.depend_command = g++ -e -m $ | sed "s,^.*: ,,"

new_moc.input = new_headers

qmake_extra_compilers += new_moc

根據上述定義,您可以使用moc的直接替代品(如果有)。 該命令執行時,附加在new_headers變數中定義的所有引數(來自input成員),並將結果寫入output成員定義的檔案中。 該檔案被新增到專案的其他原始檔中。 另外,qmake將執行depend_command來生成依賴資訊,並將該資訊也放置在專案中。

自定義編譯器規範支援以下成員:

不常用,略。

注釋說的很明確,基於static_output_base與static_base的不同,處理條件拷貝。

首先我們來看乙個示例,源目錄\src\share\qtcreator\data.pro

template = aux

include(../../../qtcreator.pri)

static_base = $$pwd

static_output_base = $$ide_data_path

static_install_base = $$install_data_path

static_files = \

$$pwd/externaltools/lrelease.xml \

$$pwd/externaltools/lupdate.xml \

$$pwd/externaltools/qmlviewer.xml \

$$pwd/externaltools/qmlscene.xml

unix else

include(../../../qtcreatordata.pri)

data.pro首先定義了用法中描述的四個變數,然後呼叫qtcreatordata.pri。

要部署的檔案static_files,源目錄src/share/qtcreator/externaltools/*

待部署檔案的基礎目錄static_base,源目錄/src/share/qtcreator

編譯輸出目錄static_output_base,構建目錄/share/qtcreator

安裝輸出目錄static_install_base,安裝目錄/share/qtcreator

下面分析接著分析qtcreatordata.pri。

如果四個變數有乙個值為空,則退出。

如果static_base與static_output_base不一樣,則自定義編譯物件copy2build,指定輸入input,輸出output,拷貝命令commands,描述name,配置config。

設定安裝集static。

我們再來看乙個示例,源目錄\src\share\3rdparty\data.pro

template = aux

include(../../../qtcreator.pri)

static_base = $$pwd

static_output_base = $$ide_data_path

static_install_base = $$install_data_path

data_dirs = \

generic-highlighter \

fonts

for(data_dir, data_dirs)

include(../../../qtcreatordata.pri)

和上乙個類似。

這裡大家注意下第一行template = aux,我們在qt creator原始碼全方面分析(3-1)介紹過,aux的含義是:

建立乙個不生成任何內容的makefile。 如果不需要呼叫任何編譯器來建立目標,請使用此選項;

想必大家也明白了,這個pri的功能,其實就是開頭說的,把這些資料/配置檔案等複製到構建目錄中。

原創造福大家,共享改變世界

獻出一片愛心,溫暖作者心靈

qt creator原始碼全方面分析 2 0

目錄 支援其他檔案型別 執行外部工具 所有主題 qt creator是為qt開發人員的需求量身定製的跨平台整合開發環境 ide qt creator可以通過多種方式擴充套件。例如,qt creator架構基於外掛程式載入器,這意味著外掛程式載入器以外的所有功能都在外掛程式中實現。但是,您可以擴充套件...

qt creator原始碼全方面分析 2 6

目錄 編寫訊息 ui文字大寫 使用句子樣式大寫 準備本地化 qt creator通用條款 請遵循本節中的準則,以確保擴充套件與qt creator ui保持一致,並且可以輕鬆地將其本地化為其他語言。編寫ui文字時,請確保它 使用者介面文字應簡潔明瞭且經濟實惠。避免使用不必要的內容詞和短語。但是,更重...

qt creator原始碼全方面分析 4 2

目錄外掛程式的本質就是動態鏈結庫,對於庫,需要匯出符號,供使用者匯入使用。在qt creator的原始碼中,存在固定的匯入匯出模式。對於每個庫和外掛程式,都有乙個xx global.h標頭檔案,其中xx為庫或外掛程式名。示例如下 pragma once include if defined xx l...