aboutsummaryrefslogtreecommitdiffstats
path: root/Lessons/Lesson_05/README.md
blob: 23130f42f73568f13f19888043ab457fbd80b9c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
To build modules in our package we've used something like this:
```
$ build --platform=UefiLessonsPkg/UefiLessonsPkg.dsc \
        --module=UefiLessonsPkg/HelloWorld/HelloWorld.inf \
        --arch=X64 \
        --buildtarget=RELEASE \
        --tagname=GCC5
```

This is kinda long string. Let's simplify it.

First we can omit `module` option from the command and always compile our package entirely with all its modules:

```
$ build --platform=UefiLessonsPkg/UefiLessonsPkg.dsc \
        --arch=X64 \
        --buildtarget=RELEASE \
        --tagname=GCC5
```

When we initiate our environment with:
```
. edk2setup.sh
```
`Conf` directory is created in the edk2 folder. This directory is populated with a bunch of files.
Also the `CONF_PATH` environment variable is created which points to the newly created `Conf` folder.

Right now we are interested in the `Conf/target.txt` file.
By default it has many comments (lines that start with `#` symbol) and is prepopulated with these values:
```
ACTIVE_PLATFORM       = EmulatorPkg/EmulatorPkg.dsc
TARGET                = DEBUG
TARGET_ARCH           = IA32
TOOL_CHAIN_CONF       = Conf/tools_def.txt
TOOL_CHAIN_TAG        = VS2015x86
BUILD_RULE_CONF = Conf/build_rule.txt
```

We can put all our build command options in this file to simplify our everyday life.
```
ACTIVE_PLATFORM       = UefiLessonsPkg/UefiLessonsPkg.dsc
TARGET                = RELEASE
TARGET_ARCH           = X64
TOOL_CHAIN_CONF       = Conf/tools_def.txt
TOOL_CHAIN_TAG        = GCC5
BUILD_RULE_CONF = Conf/build_rule.txt
```

After that we could build our package with all its modules with the one single command:
```
build
```