C++ 應用程式外掛程式為建置 C++ 應用程式提供工作、配置和慣例。
用法
plugins {
`cpp-application`
}
plugins {
id 'cpp-application'
}
建置變體
C++ 應用程式外掛程式理解以下維度。閱讀建置變體介紹以獲取更多資訊。
- 建置類型 - 始終為debug 或 release
-
建置類型控制可調試性以及產生的二進制檔案的優化程度。
-
debug
- 產生調試符號且不優化二進制檔案 -
release
- 產生調試符號並進行優化,但從二進制檔案中提取調試符號
-
- 目標機器 - 預設為建置主機
-
目標機器表示應用程式預期運行的機器。目標機器由其作業系統和架構識別。Gradle 使用目標機器來決定根據主機上的可用性選擇哪個工具鏈。
目標機器可以配置如下
application {
targetMachines = listOf(machines.linux.x86_64,
machines.windows.x86, machines.windows.x86_64,
machines.macOS.x86_64)
}
application {
targetMachines = [
machines.linux.x86_64,
machines.windows.x86, machines.windows.x86_64,
machines.macOS.x86_64
]
}
工作
下圖顯示了此外掛程式新增的工作之間的關係。

變體相關工作
C++ 應用程式外掛程式根據應用程式元件的變體建立工作。閱讀建置變體介紹以獲取更多資訊。下圖顯示了變體相關工作之間的關係。

compileVariantCpp
(例如compileDebugCpp
和compileReleaseCpp
) - CppCompile-
依賴於:所有為編譯貢獻原始碼檔案的工作 :: 使用選定的編譯器編譯 C++ 原始碼檔案。
linkVariant
(例如linkDebug
和linkRelease
) - LinkExecutable-
依賴於:所有為連結可執行檔貢獻的工作,包括來自透過專案依賴關係解析的專案的
linkVariant
和createVariant
工作 :: 使用選定的連結器從編譯後的物件檔案連結可執行檔。 installVariant
(例如installDebug
和installRelease
) - InstallExecutable-
依賴於:
linkVariant
和所有為可執行檔的運行時貢獻的工作,包括來自透過專案依賴關係解析的專案的linkVariant
工作 :: 安裝可執行檔及其所有運行時依賴關係,以便於執行。 assembleVariant
(例如assembleDebug
和assembleRelease
) - 工作 (生命週期)-
依賴於:
linkVariant
:: 聚合組裝此應用程式特定變體的工作。
生命週期工作
C++ 應用程式外掛程式將其某些工作附加到 Base Plugin 章節中記錄的標準生命週期工作 - C++ 應用程式外掛程式會自動應用這些工作
assemble
- 工作 (生命週期)-
依賴於:
linkDebug
:: 聚合工作,用於組裝專案中當前主機(如果存在)的 debug 變體應用程式。此工作由 Base Plugin 新增。 check
- 工作 (生命週期)-
聚合工作,用於執行驗證工作,例如運行測試。某些外掛程式會將它們自己的驗證工作新增到
check
。例如,C++ Unit Test Plugin 將一個工作附加到此生命週期工作以運行測試。此工作由 Base Plugin 新增。 build
- 工作 (生命週期)-
依賴於:
check
,assemble
:: 聚合工作,用於執行專案的完整建置。此工作由 Base Plugin 新增。 clean
- 刪除-
刪除建置目錄及其中的所有內容,即由
layout.buildDirectory
專案屬性指定的路徑。此工作由 Base Plugin 新增。
依賴管理
就像 C++ 應用程式外掛程式建立的工作一樣,會根據應用程式元件的變體建立多個配置。閱讀建置變體介紹以獲取更多資訊。下圖描述了 C++ 應用程式外掛程式新增的配置

-
白色配置是用戶應用於宣告依賴關係的配置
-
粉紅色配置,也稱為可消費配置 (C),是元件針對程式庫運行時使用的配置
-
藍色配置,也稱為可解析配置 (R),是元件內部的配置,供其自身使用
以下配置用於宣告依賴關係
implementation
-
用於宣告主要元件所有變體的實作依賴關係。您應該在此處宣告任何變體的依賴關係。
mainVariantImplementation
(例如mainDebugImplementation
和mainReleaseImplementation
) 擴展了implementation
-
用於宣告主要元件特定變體的實作依賴關係。您應該在此處宣告特定變體的依賴關係。
下游消費者(依賴於應用程式元件)使用以下配置
variantRuntimeElements
(例如debugRuntimeElements
和releaseRuntimeElements) 擴展了 `mainVariantImplementation
-
用於執行應用程式。此配置旨在供消費者使用,以檢索運行應用程式所需的所有元素。
應用程式本身使用以下配置
cppCompileVariant
(例如cppCompileDebug
和cppCompileRelease
) 擴展了mainVariantImplementation
-
用於編譯應用程式。此配置包含應用程式的編譯包含根目錄,因此在調用 C++ 編譯器來編譯它時使用。
nativeLinkVariant
(例如nativeLinkDebug
和nativeLinkRelease
) 擴展了mainVariantImplementation
-
用於連結應用程式。此配置包含應用程式的程式庫,因此在調用 C++ 連結器來連結它時使用。
nativeRuntimeVariant
(例如nativeRuntimeDebug
和nativeRuntimeRelease
) 擴展了mainVariantImplementation
-
用於執行應用程式。此配置包含應用程式的運行時程式庫。
慣例
C++ 應用程式外掛程式為來源和工作新增了慣例,如下所示。
專案佈局
C++ 應用程式外掛程式假定專案佈局如下所示。這些目錄都不需要存在或包含任何內容。C++ 應用程式外掛程式將編譯它找到的任何內容,並忽略任何缺失的內容。
src/main/cpp
-
C++ 原始碼,副檔名為
.cpp
、.c++
或.cc
src/main/headers
-
標頭 - 編譯應用程式所需的標頭
您可以透過在 application
腳本塊上配置 source
和 privateHeaders
分別來配置專案佈局。
compileVariantCpp
工作
C++ 應用程式外掛程式為要建置的應用程式元件的每個變體新增一個 CppCompile 實例(例如 compileDebugCpp
和 compileReleaseCpp
)。閱讀建置變體介紹以獲取更多資訊。下面顯示了一些最常見的配置選項。
compilerArgs |
[] |
debuggable |
|
includes |
|
macros |
[:] |
objectFileDir |
|
optimized |
debug 建置類型為 |
positionIndependentCode |
|
source |
|
systemIncludes |
衍生自工具鏈 |
targetPlatform |
衍生自二進制檔案的 |
toolChain |
linkVariant
工作
C++ 應用程式外掛程式為應用程式的每個變體新增一個 LinkExecutable 實例 — 例如 linkDebug
和 linkRelease
。閱讀建置變體介紹以獲取更多資訊。下面顯示了一些最常見的配置選項。
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
衍生自二進制檔案的 |
toolChain |
installVariant
工作
C++ 應用程式外掛程式為測試元件的每個變體新增一個 InstallExecutable 實例 — 例如 installDebug
和 installRelease
。閱讀建置變體介紹以獲取更多資訊。無需在工作上配置任何屬性。