From 9c393fc7b257635355d9c63ca105d3e74ffd6e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20Waage?= Date: Wed, 29 Sep 2021 15:42:04 +0200 Subject: [PATCH] Adding compilation and linking exercise. --- exercises/small/15-compilation-linking.md | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 exercises/small/15-compilation-linking.md diff --git a/exercises/small/15-compilation-linking.md b/exercises/small/15-compilation-linking.md new file mode 100644 index 0000000..5a0fdd1 --- /dev/null +++ b/exercises/small/15-compilation-linking.md @@ -0,0 +1,31 @@ +# Compilation, Linking and Assets + +In this exercise we will add a couple of files to the project. + +## CMake + +As described in the slides, the project is defined by several CMake files. The ones we are interested is `CMakeLists.txt` in the root project folder and the `CMakeLists.txt` file in the `lib` folder. + +You can see that the root CMake file is adding the `lib` subdirectory, this means that it is looking for a `CMakeLists.txt` file within that folder. + +The CMake file in the `lib` folder describes a few package requirements and then it does this + +```cmake +file(GLOB_RECURSE sources CONFIGURE_DEPENDS "*.cpp" "*.hpp") +``` + +Here it is creating a variable called `sources` that will contain all `.cpp` and `.hpp` files within the `lib` folder. This means that if we want to add new files, we don't have to list them here, as any applicable files are included. But adding a file will not automatically add the file in the IDE, as CMake needs to be run again for those changes to apply. + +This is because the current configuration and list of files are defined in the CMake and IDE project files inside of your build folder. + +# Exercise + +One of the Pac-Man ghosts is missing. We will fully implement this ghost later but for now lets add the `.cpp` and `.hpp` files to the project. + +1. Create `Blinky.hpp` and `Blinky.cpp` files within the `lib` folder. + +2. Run CMake again and see your IDE update to include this new file. You can try compiling again and see what happens. + +3. Include the `Blinky.hpp` file within the `Blinky.cpp` file. + +4. Create an empty class named `Blinky` within the `.hpp` file. Look at other ghost `.hpp` files and see how they define the class. It does not need to inherit from the `Ghost` base class and it does not need any functions. But if you have extra time, try to inherit from the Ghost class and see what happens when you try to compile.