From 0f9e5021c6dd2883e91ee00bfb52d23f6480eeec Mon Sep 17 00:00:00 2001 From: Sebastian Oberschwendtner <sebastian.oberschwendtner@tum.de> Date: Wed, 6 Mar 2024 14:29:45 +0100 Subject: [PATCH] Adds instructions how to build with Windows. --- docs/developer/build-environment/linux.md | 49 +++++++++++ docs/developer/build-environment/macos.md | 13 +++ docs/developer/build-environment/mingw.md | 13 +++ docs/developer/build-environment/windows.md | 59 ++++++++------ docs/developer/build-python.md | 0 docs/developer/{build-cpp.md => build/cpp.md} | 70 +++++++++++----- .../unix.md => build/python.md} | 0 docs/developer/cmake-presets.md | 81 +++++++++++++++++++ docs/developer/contribute.md | 67 +++++++++++++++ docs/developer/environment-python.md | 0 docs/developer/ide-setup.md | 19 +++++ docs/developer/including-libraries.md | 2 +- docs/developer/prerequisites.md | 9 --- docs/developer/setup.md | 8 -- mkdocs.yml | 49 +++++------ 15 files changed, 353 insertions(+), 86 deletions(-) create mode 100644 docs/developer/build-environment/linux.md create mode 100644 docs/developer/build-environment/macos.md create mode 100644 docs/developer/build-environment/mingw.md delete mode 100644 docs/developer/build-python.md rename docs/developer/{build-cpp.md => build/cpp.md} (71%) rename docs/developer/{build-environment/unix.md => build/python.md} (100%) create mode 100644 docs/developer/cmake-presets.md delete mode 100644 docs/developer/environment-python.md delete mode 100644 docs/developer/prerequisites.md delete mode 100644 docs/developer/setup.md diff --git a/docs/developer/build-environment/linux.md b/docs/developer/build-environment/linux.md new file mode 100644 index 0000000..645b8e6 --- /dev/null +++ b/docs/developer/build-environment/linux.md @@ -0,0 +1,49 @@ +--- +title: Setup Linux Environment +summary: How to create the C++ build environment on Linux Systems +authors: + - Sebastian Oberschwendtner +date: 2024-03-01 +--- +## Introduction +We use the basic linux tools to build *UNICADO* on Linux. +The tools used are: + +- Compiler: `GCC` + `make` +- Generator tool: `CMake` +- Package manager: → The package manager of your **Linux** distribution should suffice + +--- + +## Install Build Tools +Since there are many distributions out there and they all call the package which contains all build tools differently, we can provide just a small set of examples. +If you distribution is not listed here, make sure you at least install: + +- `gcc` + `g++` +- `make` +- `gdb` +- `git` + +=== "Arch" + + ```{.sh .copy} + sudo pacman -Syu + sudo pacman -S devtools + ``` + +=== "Ubuntu" + + ```{.sh .copy} + sudo apt-get update + sudo apt-get install build-essential + ``` +--- + +## Install Other Tools +For the other tools, we assume you know how to use your package manager. :wink: +Please install the following: + +|Package|Version| +|---|---| +|`python`| Preferably **3.11**| +|`cmake`| > **3.25**| \ No newline at end of file diff --git a/docs/developer/build-environment/macos.md b/docs/developer/build-environment/macos.md new file mode 100644 index 0000000..c641236 --- /dev/null +++ b/docs/developer/build-environment/macos.md @@ -0,0 +1,13 @@ +--- +title: Setup MacOS Environment +summary: How to create the C++ build environment on MacOS Systems +authors: + - Sebastian Oberschwendtner +date: 2024-03-01 +--- + +!!! info + We have no documentation (yet) how to setup the build environment for *MacOS*. + Bit since it is also a *Unix* based system, the standard **GCC** compiler should work as well. + ⇒ Feel free to experiment and provide documentation of your findings. :apple: :wink: + diff --git a/docs/developer/build-environment/mingw.md b/docs/developer/build-environment/mingw.md new file mode 100644 index 0000000..61a54b6 --- /dev/null +++ b/docs/developer/build-environment/mingw.md @@ -0,0 +1,13 @@ +--- +title: Setup MSYS2/MinGW Environment +summary: How to create the C++ build environment on Windows using MSYS2. +authors: + - Sebastian Oberschwendtner +date: 2024-03-01 +--- +!!! warning + Using **MSYS2** to build *UNICADO* may work, but is no longer maintained by us! + So things could have changed in the meantime. + +> Microsoft provides a good manual how to install **MSYS2**/MinGW in their [Documenation :octicons-link-external-16:](https://code.visualstudio.com/docs/cpp/config-mingw){:target="_blank"}. +Although this targets their IDE, the process of installing **MYS2** applies for us as well regardless of which IDE you use. \ No newline at end of file diff --git a/docs/developer/build-environment/windows.md b/docs/developer/build-environment/windows.md index 915f249..657b286 100644 --- a/docs/developer/build-environment/windows.md +++ b/docs/developer/build-environment/windows.md @@ -17,8 +17,18 @@ The tools used are: --- +## Install Python +- Download and install **Python**: [Download Python :octicons-link-external-16:](https://www.python.org/downloads/windows/){:target="_blank"} + +!!! warning + Please install version **3.11**! + +- Select all the default options and check the option to add Python to *PATH*. + +--- + ## Install Build Tools -- Download the build tools from Microsoft: [Download Build Tools :octicons-link-external-16:](https://visualstudio.microsoft.com/downloads/?q=build+tools#build-tools-for-visual-studio-2022) +- Download the build tools from Microsoft: [Download Build Tools :octicons-link-external-16:](https://visualstudio.microsoft.com/downloads/?q=build+tools#build-tools-for-visual-studio-2022){:target="_blank"} The page should like something like this:  @@ -26,8 +36,7 @@ The page should like something like this: - Execute the installer and install at least these components: - *Desktop development with C++* - *C++ CMake tools for Windows* - - *C++ Clang Compiler for Windows* - - *C++ Clang tools for Windows* + - *C++ Clang tools for Windows* (⇒ This will include the Clang compiler as well.) !!! attention The latest Version of Visual Studio can change throughout time. Just download the latest one and keep a note which version that is. @@ -35,41 +44,43 @@ The page should like something like this: --- ## Install CMake -- Download and Install the lates Release of **CMake**: [Download CMake :octicons-link-external-16:](https://cmake.org/download/) +- Download and Install the latest Release of **CMake**: [Download CMake :octicons-link-external-16:](https://cmake.org/download/){:target="_blank"} -!!! note - Install at least **Version 3.25**! +!!! important + Install at least version **3.25**! - Enable the option to make **CMake** available in *PATH*. --- +## Install Git +- Download and Install the latest Release of **Git**: [Download Git :octicons-link-external-16:](https://git-scm.com/download/win){:target="_blank"} +- Enable the option to make **Git** available in *PATH*. +- Leave the rest of the options to their defaults. + +--- + ## Install vcpkg *vcpkg* is the open-source package manager maintained by Microsoft we use to install and manage our dependencies. -- Follow the instructions [here :octicons-link-external-16:](https://vcpkg.io/en/getting-started) +- *vcpkg* recommends to keep the path where you install it short, so create the following folder: + + :octicons-file-directory-16: `C:\dev` !!! warning - Make sure to use the install path `C:\dev\vcpkg` as mentioned in the *get started* guide! + From now on we assume, that you installed *vcpkg* in this folder! + +- Open a terminal inside `C:\dev` +- Clone the *vcpkg* repository: -⇒ The getting started guide also explains how to install packages and use them with **Cmake**. -Make sure your IDE is configured to pass the additional parameters needed to include *vcpkg* to **CMake**, which is: -```sh --DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake +```{.sh .copy} +git clone git@github.com:microsoft/vcpkg.git ``` ---- +- Create the *vcpkg* executable by executing this command in the opened terminal: -## Building via terminal -- First make sure all required dependencies are installed using **vcpgk**! -- Configure the project you want to build with **CMake**: -```sh -cmake -B build -S . -G "Visual Studio 17 2022" -A x64 -T ClangCL,host=x64 -DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake +```{.cmd .copy} +.\vcpkg\bootstrap-vcpkg.bat ``` -!!! tip - The version of *Visual Studio* depends on which version of the build tools you have installed! :point_up: -- Build in *Debug* mode: -```sh -cmake --build build --config=Debug -``` \ No newline at end of file +You can get more information how *vcpkg* can be installed in the [Readme :octicons-link-external-16:](https://github.com/microsoft/vcpkg/?tab=readme-ov-file#getting-started){:target="_blank"} of the project itself. \ No newline at end of file diff --git a/docs/developer/build-python.md b/docs/developer/build-python.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/developer/build-cpp.md b/docs/developer/build/cpp.md similarity index 71% rename from docs/developer/build-cpp.md rename to docs/developer/build/cpp.md index dd3ba20..feee417 100644 --- a/docs/developer/build-cpp.md +++ b/docs/developer/build/cpp.md @@ -5,38 +5,68 @@ authors: - Sebastian Oberschwendtner date: 2023-09-12 --- -**UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/) for generating the build files. +**UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/){:target="_blank"} for generating the build files. 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/). +For more information about this system, please refer to its [Documentation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/){:target="_blank"}. + +## Install required dependencies +We do not provide an automatic way to get the required dependencies, since we do not want to force any specific package manager on you. +*UNICADO* has currently these external dependencies for building: + +- [Eigen3 :octicons-link-external-16:](https://eigen.tuxfamily.org/index.php?title=Main_Page){:target="_blank"} +- [Boost :octicons-link-external-16:](https://www.boost.org/){:target="_blank"} +- [CGAL :octicons-link-external-16:](https://www.cgal.org/){:target="_blank"} + +However, if you followed the instructions in *Prerequisites* you can install them as follows: + +=== "Windows" + + ``` { .cmd .copy } + C:\dev\vcpkg\vcpkg.exe install eigen3 boost cgal + ``` + + !!! note + This may take some time and you can install one package after the other. + +=== "MinGW" + + ``` { .sh .copy } + pacman -S mingw-w64-ucrt-x86_64-eigen3 mingw-w64-ucrt-x86_64-boost mingw-w64-ucrt-x86_64-cgal + ``` +=== "Unix" + + ⇒ Use your the package manager of your distribution to install the packages. :wink: + ## 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. -With this information in mind the configuration steps are: -1. Open a terminal inside the root directory of the *rAircraftDesign* repository. -2. Create a folder called `build` if it does not exist yet with `mkdir 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 [CMale Presets](../cmake-presets.md) for more information about that. - !!! note - This *build* folder is not part of the repository. +### Terminal +The programmers way to configure **CMake**: -3. Configure **CMake** by explicitly telling it to generate build files for your platform with the option `-G`: +1. Open a terminal inside the root directory of the *rAircraftDesign* repository. +2. Configure **CMake** by explicitly telling it which preset to use: === "Windows" ``` { .sh .copy } - cmake -B build -S . -G "Visual Studio 16 2019" -A x86 -T ClangCL,hosT=x86 + cmake -B build -S . --preset Windows ``` === "MinGW" ``` { .sh .copy } - cmake -B build -S . -G "MinGW Makefiles" + cmake -B build -S . --preset MSYS2 ``` -=== "Unix" +=== "Linux" ``` { .sh .copy } - cmake -B build -S . -G "Unix Makefiles" + cmake -B build -S . --preset Linux ``` During this configuration, **CMake** generates a cache file which remembers some parameters which are re-used when you configure **CMake** again. @@ -46,18 +76,18 @@ When this happens, you can tell **CMake** explicitly to refresh this cache by: === "Windows" ``` { .sh .copy } - cmake -B build -S . -G "Visual Studio 16 2019" -A x86 -T ClangCL,hosT=x86 --fresh + cmake -B build -S . --preset Windows --fresh ``` === "MinGW" ``` { .sh .copy } - cmake -B build -S . -G "MinGW Makefiles" --fresh + cmake -B build -S . --preset MSYS2 --fresh ``` -=== "Unix" +=== "Linux" ``` { .sh .copy } - cmake -B build -S . -G "Unix Makefiles" --fresh + cmake -B build -S . --preset Linux --fresh ``` Alternatively, you can just delete everything inside the build directory before configuring **CMake** again. @@ -73,19 +103,19 @@ The default build configuration of **CMake** is ^^Release^^. The build configura === "MinGW" ``` { .sh .copy } - cmake -B build -S . -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE:STRING=Debug + cmake -B build -S . --preset MSYS2 -DCMAKE_BUILD_TYPE:STRING=Debug ``` -=== "Unix" +=== "Linux" ``` { .sh .copy } - cmake -B build -S . -G "Unix Makefiles"-DCMAKE_BUILD_TYPE:STRING=Debug + cmake -B build -S . --preset Linux -DCMAKE_BUILD_TYPE:STRING=Debug ``` ### GUI **CMake** also comes with a GUI which can be used for the configuration process. The GUI looks like this: - + It works the same as the command line interface. You have to specify the path to the source files and to the build directory. diff --git a/docs/developer/build-environment/unix.md b/docs/developer/build/python.md similarity index 100% rename from docs/developer/build-environment/unix.md rename to docs/developer/build/python.md diff --git a/docs/developer/cmake-presets.md b/docs/developer/cmake-presets.md new file mode 100644 index 0000000..8e47e07 --- /dev/null +++ b/docs/developer/cmake-presets.md @@ -0,0 +1,81 @@ +--- +title: CMake Presets +summary: How to define your custom CMake preset +authors: + - Sebastian Oberschwendtner +date: 2024-03-06 +--- +## Introduction +If you don't know what **CMake** presets are, read about them in their [Documenation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html){:target="_blank"}. + +We provide as standard set of presets in :octicons-file-16: `CMakePresets.json` which gives you some reasonable defaults. +However, our assumptions may not apply to your build environment. +So there is the option to provide a custom :octicons-file-16: `CMakeUserPresets.json` which can override certain options of our presets. +Just make sure your preset inherits our defaults. +The following provides preset templates you can build your preset upon. + +!!! warning + Do not include the :octicons-file-16: `CMakeUserPresets.json` file into version control! + This file should be an untracked local file on your machine. + +## User Presets + +=== "Windows" + + A possible user preset for the *Windows* preset: + ```{.json .copy} + { + "version": 6 + "configurePresets": [ + { + "name": "default", + "inherits": "Windows", + <your custom overrides here> + } + ] + } + ``` + +=== "MinGW" + + A possible user preset for running *MSYS2* on Windows: + ```{.json .copy} + { + "version": 6 + "configurePresets": [ + { + "name": "default", + "inherits": "MSYS2", + <your custom overrides here> + } + ] + } + ``` + +=== "Linux" + + A possible user preset for the *Linux* preset: + ```{.json .copy} + { + "version": 6 + "configurePresets": [ + { + "name": "default", + "inherits": "Linux", + <your custom overrides here> + } + ] + } + ``` + +!!! note + The templates do not provide any concrete custom settings, since those might be very specific to your system. In general, **CMake** will tell you when something is wrong with the default settings and then you can add your custom override in the user preset. + Feel free to look at our presets to understand what each provided preset does and why this may not be applicable to your system. + +If you used the `name` parameter as shown in the templates you can use the custom preset when configuring **CMake** like this: +``` +cmake -B build -S . --preset default +``` + +!!! tip + Most **CMake** IDE plugins should recognize these preset files and provide a way for you to select the preset you want. \ No newline at end of file diff --git a/docs/developer/contribute.md b/docs/developer/contribute.md index e69de29..f65d268 100644 --- a/docs/developer/contribute.md +++ b/docs/developer/contribute.md @@ -0,0 +1,67 @@ +--- +title: How to contribute to UNICADO +summary: Explains the basic procedure how to contribute. +authors: + - Sebastian Oberschwendtner +date: 2024-03-05 +--- +# How to contribute to UNICADO + +You want to contribute to UNICADO? + +Awesome! :sunglasses: Please make sure to read our *style guides* first: + +- Our [⤷ C++ Code Style](style/cpp.md). +- Our [⤷ Python Code Style](style/python.md). + +## Commit rules and messages + +- Commit messages should be clear and concise. +- Use **English** language. +- Use the `#` to close and refer to issues. +- Please use **present tense** to express what the commit does. +- **Don't** commit code which you know is not working. + +## Types of contribution +We use *issues* and *merge request* to manage the contribution to UNICADO. +You should always create an issue **first**, before creating the merge request. +The issue is used to discuss and plan the required work. +An issue should always have at least the following *labels*: + +- **Type:** The type of the issue, can be: `type::bug` `type::feature` `type::todo` `type::documentation` +- **Tool:** Specify which *tool manager* is responsible, i.e. `library::aixml` or `module::calculatePolar` +- **Priority**: *Optional*, can be: `priority::low` `priority::medium` `priority::high` + +We have *issue templates* for each issue **type**. +Please use them accordingly and fill out all relevant information. +The following gives you further information when to use which template: + +### Did you find a bug? + +- **Ensure the bug was not already reported** by searching under *Issues*. +- If you're unable to find a related issue addressing the problem, open a new one. +Be sure to use the `Bug` **Issue Template** and give a fitting **title and clear description**. +Give as much relevant information as possible. +- Please include **test to reproduce** the bug. + +### Do you intend to add a new feature or method? + +- Create an issue using the `Feature` template. +- If you are implementing a new method, please provide relevant references. + +### Do you want to assign a maintenance task to yourself or somebody? + +- Create an issue using the `Todo` template. +- Please describe the task in a meaningful manner, so others can understand what the task involves and could take over. + +### Is something unclear in the documentation? + +- Please ask the person who implemented the part the documentation refers to. +The issues should **not** be used as a *Q/A* forum. +- If you have concrete information/ideas how the documentation can be improved, create an issue using the `Documentation` template. + +--- + +:heart: Thanks for reading this! We are looking forward to your contributions! + +UNICADO Team diff --git a/docs/developer/environment-python.md b/docs/developer/environment-python.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/developer/ide-setup.md b/docs/developer/ide-setup.md index e69de29..cba423b 100644 --- a/docs/developer/ide-setup.md +++ b/docs/developer/ide-setup.md @@ -0,0 +1,19 @@ +--- +title: IDE Setup +summary: How to setup certain IDEs +authors: + - Sebastian Oberschwendtner +data: 2024-03-06 +--- +## Introduction +In general, the build system of *UNICADO* is not based on a specific IDE. +All the required tools can be called directly via a terminal. +We cannot provide a manual for every IDE out there, but here is a quick overview of the most popular IDEs we use in the project: + +## Visual Studio Code - VS Code +[VSCode :octicons-link-external-16:](https://code.visualstudio.com/){:target="_blank"} is a popular open-source IDE from Microsoft. +It offers great flexibility with its capability to install extensions. +You can explorer the good [Documentation :octicons-link-external-16:](https://code.visualstudio.com/docs/cpp/config-msvc){:target="_blank"} of **VSCode** how to set it up for C++. + +!!! note + Do not confuse **VS Code** with _Visual Studio_. :point_up: Those are two __different__ IDEs... \ No newline at end of file diff --git a/docs/developer/including-libraries.md b/docs/developer/including-libraries.md index f4d41a1..01079fb 100644 --- a/docs/developer/including-libraries.md +++ b/docs/developer/including-libraries.md @@ -20,7 +20,7 @@ In the **UNICADO** project, the most important decisions to make are: Each of those decisions has a corresponding option when configuring **CMake**. So you can decide for your situation what suits your workflow the best. -The default configuration when [Building with CMake](build-cpp.md) is: +The default configuration when [Building with CMake](build/cpp.md) is: - `BUILD_SHARED_LIBS=OFF` :fontawesome-solid-arrow-right: Build **static** libraries. - `FIND_LIBRARIES_AS_PACKAGE=OFF` :fontawesome-solid-arrow-right: Include **targets** from the submodule and recompile libraries each time there are changes. diff --git a/docs/developer/prerequisites.md b/docs/developer/prerequisites.md deleted file mode 100644 index 1b32b97..0000000 --- a/docs/developer/prerequisites.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Build Instructions -summary: Contains the instruction to get the build process up and running. -authors: - - Sebastian Oberschwendtner -date: 2023-09-06 -glightbox: false ---- -# Build Instructions \ No newline at end of file diff --git a/docs/developer/setup.md b/docs/developer/setup.md deleted file mode 100644 index 958f7d5..0000000 --- a/docs/developer/setup.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Software Development Setup -summary: How to setup the environment to successfully contribute to UNICADO. -authors: - - Sebastian Oberschwendtner -date: 2023-09-06 -glightbox: false ---- diff --git a/mkdocs.yml b/mkdocs.yml index 9766863..c5f6711 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -92,35 +92,36 @@ nav: - 'getting-started/takeoff.md' - 'Developer': - 'How to Contribute': 'developer/contribute.md' - - 'Build Environment': - - 'IDE Setup': 'developer/ide-setup.md' - - 'C++ Environment': - - 'Windows': 'developer/build-environment/windows.md' - - 'Unix': 'developer/build-environment/unix.md' - - 'Python Environment': 'developer/environment-python.md' - 'Build Instructions': - - 'Prerequisites': 'developer/prerequisites.md' - - 'Building C++ Modules': 'developer/build-cpp.md' - - 'Build Python Modules': 'developer/build-python.md' + - 'Prerequisites': + - 'Windows': 'developer/build-environment/windows.md' + - 'Linux': 'developer/build-environment/linux.md' + - 'MacOS': 'developer/build-environment/macos.md' + - 'MSYS2/MinGW (deprecated)': 'developer/build-environment/mingw.md' + - 'Build': + - 'C++': 'developer/build/cpp.md' + - 'Python': 'developer/build/python.md' - 'Libraries': 'developer/including-libraries.md' + - 'CMake Presets': 'developer/cmake-presets.md' - 'Style Guide': - 'C++': 'developer/style/cpp.md' - 'Python': 'developer/style/python.md' - - 'Aircraft Exchange File': - - 'General': 'aircraft-xml/general.md' - - 'MassesAndLoadings': 'aircraft-xml/masses.md' - - 'Geometry': 'aircraft-xml/geometry.md' - - 'Structure': 'aircraft-xml/structure.md' - - 'Accommodation': 'aircraft-xml/accommodation.md' - - 'Propulsion': 'aircraft-xml/propulsion.md' - - 'Systems': 'aircraft-xml/systems.md' - - 'Aerodynamics': 'aircraft-xml/aerodynamics.md' - - 'StabilityAndControlCharacteristics': 'aircraft-xml/stability.md' - - 'Performance': 'aircraft-xml/performance.md' - - 'MonetaryValues': 'aircraft-xml/monetary.md' - - 'EcologicalValues': 'aircraft-xml/ecological.md' - - 'Requirements': 'aircraft-xml/requirements.md' - - 'DesignSpecification': 'aircraft-xml/specification.md' + - 'IDE Setup': 'developer/ide-setup.md' + # - 'Aircraft Exchange File': + # - 'General': 'aircraft-xml/general.md' + # - 'MassesAndLoadings': 'aircraft-xml/masses.md' + # - 'Geometry': 'aircraft-xml/geometry.md' + # - 'Structure': 'aircraft-xml/structure.md' + # - 'Accommodation': 'aircraft-xml/accommodation.md' + # - 'Propulsion': 'aircraft-xml/propulsion.md' + # - 'Systems': 'aircraft-xml/systems.md' + # - 'Aerodynamics': 'aircraft-xml/aerodynamics.md' + # - 'StabilityAndControlCharacteristics': 'aircraft-xml/stability.md' + # - 'Performance': 'aircraft-xml/performance.md' + # - 'MonetaryValues': 'aircraft-xml/monetary.md' + # - 'EcologicalValues': 'aircraft-xml/ecological.md' + # - 'Requirements': 'aircraft-xml/requirements.md' + # - 'DesignSpecification': 'aircraft-xml/specification.md' - 'About': - 'license.md' - 'contact.md' -- GitLab