36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
# 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`](../../../CMakeLists.txt) in the root project folder and
|
|
the [`CMakeLists.txt`](../../../lib/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 CMake 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.
|
|
|
|
# Exercise
|
|
|
|
One of the Pac-Man ghosts is missing. We will fully implement this ghost later but for now let's add the `.cpp`
|
|
and `.hpp` files to the project.
|
|
|
|
1. Create a `Clyde.hpp` in the `lib/include` folder and a `Clyde.cpp` file in the `lib` folder.
|
|
|
|
2. Run CMake again and see your IDE update to include these new files. You can try compiling again and see what happens.
|
|
|
|
3. Include the `Clyde.hpp` file within the `Clyde.cpp` file, and add `#pragma once` to `Clyde.hpp`.
|
|
|
|
4. Include `Clyde.hpp` in [GameState.hpp](../../../lib/include/GameState.hpp) and rebuild
|