mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2025-07-01 23:46:59 +00:00
120 lines
2.6 KiB
Markdown
120 lines
2.6 KiB
Markdown
# Base Template for C++ based projects
|
|
## How to use
|
|
|
|
TODO: section on how to initialize with this
|
|
|
|
## Name and Version
|
|
|
|
In order to specify the project name, executable name and name of the unit tests executable, edit the CMakeLists.txt.
|
|
In there, it says:
|
|
|
|
```cmake
|
|
project(
|
|
"MY_PROJECT" # replace this
|
|
VERSION 0.1.0
|
|
LANGUAGES CXX
|
|
)
|
|
```
|
|
|
|
Edit the `MY_PROJECT` to a name that suits your project, and adjust the `VERSION` if necessary.
|
|
|
|
Further, go into `vcpkg.json` and edit the two lines shown here, similarly to how you did in the CMakeLists.txt:
|
|
|
|
```json
|
|
{
|
|
"name": "my-project",
|
|
"version-string": "0.1.0",
|
|
...
|
|
```
|
|
|
|
Keep in mind the name constraints and requirements for vcpkg.
|
|
|
|
## Adding source files
|
|
|
|
To add source files, add them to the following section in the CMakeLists.txt:
|
|
|
|
```cmake
|
|
# add all headers (.h, .hpp) to this
|
|
set(PRJ_HEADERS )
|
|
# add all source files (.cpp) to this, except the one with main()
|
|
set(PRJ_SOURCES )
|
|
```
|
|
|
|
For example, to add `mysource.cpp`, `somefile.cpp` and `myheader.h`, proceed as follows:
|
|
|
|
```cmake
|
|
# add all headers (.h, .hpp) to this
|
|
set(PRJ_HEADERS mysource.cpp somefile.cpp)
|
|
# add all source files (.cpp) to this, except the one with main()
|
|
set(PRJ_SOURCES myheader.h)
|
|
```
|
|
|
|
## Building
|
|
|
|
To build, run cmake (`bin` will be the output directory, `.` the source directory):
|
|
|
|
```sh
|
|
cmake -S . -B bin
|
|
```
|
|
|
|
This will configure it with all default settings.
|
|
Then build with:
|
|
|
|
```sh
|
|
cmake --build bin --parallel
|
|
```
|
|
|
|
## Adding dependencies
|
|
|
|
First, find your dependency on vcpkg (for example using [this website](https://vcpkg.io/en/packages.html)). For example, you may be looking for lionkor's `commandline` library, and you will find `lionkor-commandline`.
|
|
|
|
Second, note down the name, in our example `lionkor-commandline`, and add it to the vcpkg.json, like so:
|
|
|
|
Before:
|
|
```json
|
|
{
|
|
...
|
|
"dependencies": [
|
|
"fmt",
|
|
"doctest"
|
|
]
|
|
}
|
|
```
|
|
|
|
After:
|
|
```json
|
|
{
|
|
...
|
|
"dependencies": [
|
|
"fmt",
|
|
"doctest",
|
|
"lionkor-commandline"
|
|
]
|
|
}
|
|
```
|
|
|
|
|
|
Third, go to CMakeLists.txt and find the following:
|
|
|
|
```cmake
|
|
# add dependency find_package calls and similar here
|
|
find_package(fmt CONFIG REQUIRED)
|
|
find_package(doctest CONFIG REQUIRED)
|
|
...
|
|
```
|
|
and add your `find_package` call or equivalent below it.
|
|
|
|
Last, find this section (above the previous):
|
|
```cmake
|
|
# add all libraries used by the project (WARNING: also set them in vcpkg.json!)
|
|
set(PRJ_LIBRARIES
|
|
fmt::fmt
|
|
...
|
|
)
|
|
```
|
|
and add your library there. The exact expression used here differs from library to library, but should be easy to find in their documentation. When in doubt, it's simply the name of the library.
|
|
|
|
|
|
|
|
|