- INF - Module Information file
- DEC - Package Declaration file
- DSC - Platform Description File
INF
就是要怎麼build這個module,可以使用下面幾個section來描述:
[Defines] - 基礎設定
- INF_VERSION - INF的版本
- BASE_NAME - Build完之後產生的efi或lib的檔名
- MODULE_UNI_FILE - 可以把Abstract和Description一起build進header裡面
- FILE_GUID - 此Module的Guid
- MODULE_TYPE - 要build成什麼type
- VERSION_STRING - 可以自訂此module的板號
- ENTRY_POINT - 不是.lib才要,就是第一個跑的地方
- LIBRARY_CLASS - 就是其他Module有要參考的話要用這個名稱
- CONSTRUCTOR - 如果此Module是一個libaray而且需要被初始化的話可以加入這個
[Packages] - 這個module會用到的package
[Sources] - source code
[LibraryClass] - 需要用到的library,加入其他Module的INF裡面LIBRARY_CLASS的名子
[Protocols] - protocol
[Guids] - guid
[BuildOptions] - 在build code的時候給complier看的,有些東西可以先define在這裡
DEC
用來宣告這個Package有什麼可以用還有Include folder要去哪裡找,也可以在邊改pcd的值,這裡也有一些section要描述:
[Define] -
- DEC_SPECIFICATION - DEC版本
- PACKAGE_NAME - 此package的名稱
- PACKAGE_GUID - 此package的guid
- PACKAGE_VERSION - 此package的版本
[Include] -
[Guid] - 這個package會用到的
[Pcds...] - ...
- [PcdsFixedAtBuild]
- [PcdsPatchableInModule]
- [PcdsDynamic]
- [PcdsDynamicEx]
- ...
DSC
是用來描述如何build這個package,1個package必須包含1或多數個component
[Defines] -
- PLATFORM_NAME - package的名子
- PLATFORM_GUID -
- PLATFORM_VERSION -
- DSC_SPECIFICATION - dsc的版本
- OUTPUT_DIRECTORY - build完會在哪
- SUPPORTED_ARCHITECTURES - e.g. IA32, x64, arm...
- BUILD_TARGET - DEBUG, RELEASE
- SKU_IDENTIFIER - $(SkuUiName)
[LibraryClasses] - 把這個package裡面所有人會用到的library名稱和路徑列出來
[Pcds...] -
[Components] - 這個package要build的所有component或module
Ref.
https://github.com/tianocore/tianocore.github.io/wiki/Build-Description-Files