Skip to content
Snippets Groups Projects
Commit d9bc476c authored by Alfin Johny's avatar Alfin Johny
Browse files

Adapt nav tree view of the website

parent 314f2bb2
No related branches found
No related tags found
3 merge requests!55[WEBPAGE] Update style of current unicado page,!18Fix header issue in subpages.,!17Integrate mkdoxy in CI pipeline
Pipeline #1563448 failed
Showing
with 84 additions and 67 deletions
......@@ -23,7 +23,7 @@ Furthermore an initial estimation of the takeoff mass is done.
|Module Version|Language|License|Documentation|
|:---:|:---:|:---:|---|
|2.1.0|:simple-cplusplus: |GPLv3|[Link](initial_sizing/content/index.md)|
|2.1.0|:simple-cplusplus: |GPLv3|[Link](aircraft-design/initial_sizing/doc/content/index.md)|
---
......
You want to **use** UNICADO to get familiar with the workflow and see first results? Great :fire: Then check out the [Installation Guide](installation.md) and the [Cleared for Take-Off](takeoff.md). It includes the prerequisites, troubleshooting hints and a standalone installer.
If you're a **developer** interested in contributing to UNICADO, follow the [Developer Installation Guide](../developer/developer-installation.md). However, you also need to check out the [Installation Requirements](installation.md) first!
If you're a **developer** interested in contributing to UNICADO, follow the [Developer Installation Guide](../get-involved/developer-installation.md). However, you also need to check out the [Installation Requirements](installation.md) first!
File moved
---
title: General
authors:
- Kristina Mazur
date: 2024-11-05
---
To understand **UNICADO's code base**, there are some things you need to know:
1. The code is in both :simple-cplusplus: C++ and :simple-python: Python. This makes the software especially exciting for development :fire:.
2. We work a lot with executables in order to integrate them into the workflow (you might have seen this the [standalone download](../../download/takeoff.md)).
3. For generating the build files, **UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/){:target="_blank"}.
CMake is a build system generator, which allows for cross-platform compilation.
For more information about this system, please refer to its [Documentation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/){:target="_blank"}.
A step by step guide on how to build UNICADO modules can be found [here](cpp.md) for C++ modules or [here](python.md) for python modules, respectively.
## Some words about :simple-cmake: CMake
In UNICADO, CMake plays a crucial role as our build system generator. CMake simplifies the process of generating platform-specific build files, making it easier to compile the code across various operating systems. This is especially useful for developers, as it ensures consistency and efficiency in building executables regardless of the environment.
By defining build instructions in `CMakeLists.txt` files, CMake enables flexible configuration options, allowing us to manage dependencies and set up customized builds effortlessly.
The typical CMake-based workflow includes two steps: configure and build. Here are some insights:
### Configure CMake
Since **CMake** is independent of the used platform, it needs to figure out on which platform you are running your current build. This process is called *Configuration*. During configuration, **CMake** checks on which platform you are and selects the appropriate build system/compiler.
**CMake** wants to separate the build specific files from the source files. Usually, this is done by providing a separate *build* directory, where all the intermediate files are stored before actually executing the build.
!!! note
**CMake** introduced the concept of [Presets :octicons-link-external-16:](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html){:target="_blank"} which allows to specify different sets of arguments which are passed to **CMake** when configuring the project.
We provide a basic preset file which contains a reasonable default configuration for each platform we support. You can however, create your own :octicons-file-16: `CMakeUserPresets.json` file along our preset file to override our settings. See [CMake Presets](../cmake-presets.md) for more information about that.
**CMake** also comes with a **GUI** which can be used for the configuration process.
The GUI looks like this:
![CMake GUI](../../assets/images/screenshots/cmake-gui.png)
It works the same as the command line interface.
You have to specify the path to the source files and to the build directory.
Then you have to select the preset you want to use.
You can see the exposed options of the project as well.
And as the GUI already tells you:
> Press Configure to update and display new values in red, then press Generate to generate selected build files.
These project options are currently available during configuration time:
| Name | Default | Description |
| --- | :---: | ---|
|**BUILD_BLACKBOXTESTS**| `OFF` | Whether to build the blackbox tests. (If available)|
|**BUILD_UNITTEST**| `OFF` |Whether to build the unit tests. (If available)|
|**BUILD_SHARED_LIBS**| `OFF` | Decide whether the libraries are built as static or shared libraries.|
|**PACKAGE_SYSTEM_LIBRARIES**| `OFF` | Whether to include all system libraries when creating release packages. *(Only available in `rUNICADO`)* |
|**FIND_LIBRARIES_AS_PACKAGE**| `OFF` |If *true* the libraries are included with `find_package()`, otherwise the *submodule* with `add_subdirectory()` is used.|
|**STATIC_GLIBS**| `OFF` | Whether to link the *GCC runtime libraries* as static libraries. :warning: ^^**Experimental**^^ |
The other options shown in the GUI are specific to **CMake**.
(*Not all options shown in the table are part of the screenshot, since the screenshot was taken before these options were introduced.*)
### Build with CMake
Once the configuration is complete and build files are generated, the build step compiles the modules into executables or libraries. This is where CMake hands over control to the underlying compiler, which translates the C++ and Python components of UNICADO into a runnable format.
The different modules are called *targets* in the **CMake** language.
---
title: General
authors:
- Kristina Mazur
date: 2024-11-05
---
To understand **UNICADO's code base**, there are some things you need to know:
1. The code is in both :simple-cplusplus: C++ and :simple-python: Python. This makes the software especially exciting for development :fire:.
2. We work a lot with executables in order to integrate them into the workflow (you might have seen this the [standalone download](../../download/takeoff.md)).
3. For generating the build files, **UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/){:target="_blank"}.
CMake is a build system generator, which allows for cross-platform compilation.
For more information about this system, please refer to its [Documentation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/){:target="_blank"}.
A step by step guide on how to build UNICADO modules can be found [here](cpp.md) for C++ modules or [here](python.md) for python modules, respectively.
## Some words about :simple-cmake: CMake
In UNICADO, CMake plays a crucial role as our build system generator. CMake simplifies the process of generating platform-specific build files, making it easier to compile the code across various operating systems. This is especially useful for developers, as it ensures consistency and efficiency in building executables regardless of the environment.
By defining build instructions in `CMakeLists.txt` files, CMake enables flexible configuration options, allowing us to manage dependencies and set up customized builds effortlessly.
The typical CMake-based workflow includes two steps: configure and build. Here are some insights:
### Configure CMake
Since **CMake** is independent of the used platform, it needs to figure out on which platform you are running your current build. This process is called *Configuration*. During configuration, **CMake** checks on which platform you are and selects the appropriate build system/compiler.
**CMake** wants to separate the build specific files from the source files. Usually, this is done by providing a separate *build* directory, where all the intermediate files are stored before actually executing the build.
!!! note
**CMake** introduced the concept of [Presets :octicons-link-external-16:](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html){:target="_blank"} which allows to specify different sets of arguments which are passed to **CMake** when configuring the project.
We provide a basic preset file which contains a reasonable default configuration for each platform we support. You can however, create your own :octicons-file-16: `CMakeUserPresets.json` file along our preset file to override our settings. See [CMake Presets](../cmake-presets.md) for more information about that.
**CMake** also comes with a **GUI** which can be used for the configuration process.
The GUI looks like this:
![CMake GUI](../../assets/images/screenshots/cmake-gui.png)
It works the same as the command line interface.
You have to specify the path to the source files and to the build directory.
Then you have to select the preset you want to use.
You can see the exposed options of the project as well.
And as the GUI already tells you:
> Press Configure to update and display new values in red, then press Generate to generate selected build files.
These project options are currently available during configuration time:
| Name | Default | Description |
| --- | :---: | ---|
|**BUILD_BLACKBOXTESTS**| `OFF` | Whether to build the blackbox tests. (If available)|
|**BUILD_UNITTEST**| `OFF` |Whether to build the unit tests. (If available)|
|**BUILD_SHARED_LIBS**| `OFF` | Decide whether the libraries are built as static or shared libraries.|
|**PACKAGE_SYSTEM_LIBRARIES**| `OFF` | Whether to include all system libraries when creating release packages. *(Only available in `rUNICADO`)* |
|**FIND_LIBRARIES_AS_PACKAGE**| `OFF` |If *true* the libraries are included with `find_package()`, otherwise the *submodule* with `add_subdirectory()` is used.|
|**STATIC_GLIBS**| `OFF` | Whether to link the *GCC runtime libraries* as static libraries. :warning: ^^**Experimental**^^ |
The other options shown in the GUI are specific to **CMake**.
(*Not all options shown in the table are part of the screenshot, since the screenshot was taken before these options were introduced.*)
### Build with CMake
Once the configuration is complete and build files are generated, the build step compiles the modules into executables or libraries. This is where CMake hands over control to the underlying compiler, which translates the C++ and Python components of UNICADO into a runnable format.
The different modules are called *targets* in the **CMake** language.
After this step, you’ll have compiled executables and/or libraries ready to run or integrate into the UNICADO workflow. :simple-cmake: :heart:
\ No newline at end of file
File moved
File moved
There is no dedicated installer for developers. As a developer you are expected to build your own installer. :wink:
These steps to get you up and running are *(Choose according to your operating system.)*:
- Make sure your build system is working as explained in the [:octicons-checklist-16: developer prerequisites](../developer/build-environment/windows.md).
- Ensure you have [:octicons-repo-clone-16: cloned all repositories](../developer/get-source-code.md)
- Follow the [:simple-cmake: build instructions](../developer/build/general.md) to build the tools. Also check out the [:material-library: libraries](../developer/including-libraries.md) and the [CMake Preset](../developer/cmake-presets.md) explanation.
- Make yourself acquainted with the [style guides](../developer/style/cpp.md).
- Read about the [module structures](../developer/style/cpp-modularization.md) to learn about the strategy patterns.
- Learn about the [:material-test-tube-empty: testing procedures](../developer/testing.md).
- Read the [contribution instruction](../developer/contribute.md) to understand the process.
Now you are ready to contribute :material-file-code: !
In case you need tips on how to set up your IDE, check [here](../developer/ide-setup.md).
Relevant for UNICADO owners only: here it is explained how to create the [UNICADO release package](../developer/release-package.md) :material-white-balance-incandescent:
\ No newline at end of file
There is no dedicated installer for developers. As a developer you are expected to build your own installer. :wink:
These steps to get you up and running are *(Choose according to your operating system.)*:
- Make sure your build system is working as explained in the [:octicons-checklist-16: developer prerequisites](../get-involved/build-environment/windows.md).
- Ensure you have [:octicons-repo-clone-16: cloned all repositories](../get-involved/get-source-code.md)
- Follow the [:simple-cmake: build instructions](../get-involved/build/general.md) to build the tools. Also check out the [:material-library: libraries](../get-involved/including-libraries.md) and the [CMake Preset](../get-involved/cmake-presets.md) explanation.
- Make yourself acquainted with the [style guides](../get-involved/style/cpp.md).
- Read about the [module structures](../get-involved/style/cpp-modularization.md) to learn about the strategy patterns.
- Learn about the [:material-test-tube-empty: testing procedures](../get-involved/testing.md).
- Read the [contribution instruction](../get-involved/contribute.md) to understand the process.
Now you are ready to contribute :material-file-code: !
In case you need tips on how to set up your IDE, check [here](../get-involved/ide-setup.md).
Relevant for UNICADO owners only: here it is explained how to create the [UNICADO release package](../get-involved/release-package.md) :material-white-balance-incandescent:
\ No newline at end of file
File moved
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment