Open joyoseller20100802 opened 1 year ago
My thought about it is that the uefi add package(dsc dec) and class(inf) Based on c (.c file and .h file) ,a class (a inf) have many c file and their reference information of c file of other package and corresponding class can get from its dsc file.but it has it own MdePkg/MdePkg.dec to reflect the reference information,I think it's more intuitive.
In lesson 20 i thought it again ,inf can not use the information in dsc because dsc `s component include inf w if inf w use the information in its dsc can lead to cycle use ,so inf can not use the information in dsc in theory.
Of cause this is only on case ,other cases such as lesson 2 inf can use the information of its dsc .
Generally if we use a library or PCD from another package, we would need to include declaration (DEC) file for that package.
Why is that? Let's comment the
Packages
section in ourUefiLessonsPkg/SimplestApp/SimplestApp.inf
file:In this case the build would fail with this error:
Here the build system complains that it can't find the header file
Uefi.h
. If you'll search for this file in the edk2 repo, you will find it in theMdePkg/Include
folder (https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Uefi.h)But as you see the build system couldn't find it in our case.
How does including
MdePkg/MdePkg.dec
fixes the issue? If you'll look at the https://github.com/tianocore/edk2/blob/master/MdePkg/MdePkg.dec you'll see that it has these statements:This adds another folder (
MdePkg/Include
) folder to search for include files. And this is what we need to make our build system happy.Just in case here is a documentation for the INF file
[Packages]
section: https://edk2-docs.gitbook.io/edk-ii-inf-specification/3_edk_ii_inf_file_format/37_-packages-_sections