Skip to content
This repository has been archived by the owner on Apr 19, 2023. It is now read-only.

Align docs and dependencies #18

Draft
wants to merge 9 commits into
base: develop
Choose a base branch
from
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.18)

# Not ideal to use this global variable, but necessary to make sure
# that tooling and projects use the same version
Expand All @@ -24,7 +24,7 @@ set(OPT_WARNINGS_AS_ERRORS_DEVELOPER_DEFAULT TRUE)
# https://github.com/cpp-best-practices/project_options
include(FetchContent)
FetchContent_Declare(_project_options
URL https://github.com/cpp-best-practices/project_options/archive/refs/tags/v0.17.0.zip)
URL https://github.com/cpp-best-practices/project_options/archive/refs/tags/v0.20.0.zip)
FetchContent_MakeAvailable(_project_options)
include(${_project_options_SOURCE_DIR}/Index.cmake)

Expand Down Expand Up @@ -92,6 +92,7 @@ dynamic_project_options(
PCH_HEADERS
<vector>
<string> # This is a list of headers to pre-compile, here are some common ones
ENABLE_CONAN # Use Conan for package management
# CONAN_OPTIONS # Extra options to pass to conan
# MSVC_WARNINGS # Override the defaults for the MSVC warnings
# CLANG_WARNINGS # Override the defaults for the CLANG warnings
Expand Down
61 changes: 26 additions & 35 deletions README_dependencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,23 @@ RefreshEnv.cmd # reload the environment
```

### Necessary Dependencies
1. A C++ compiler that supports C++17.
1. A C++ compiler that supports C++20.
See [cppreference.com](https://en.cppreference.com/w/cpp/compiler_support)
to see which features are supported by each compiler.
The following compilers should work:

* [gcc 7+](https://gcc.gnu.org/)
* [gcc 11+](https://gcc.gnu.org/)
<details>
<summary>Install command</summary>

- Debian/Ubuntu:
- Ubuntu 21.04+:

sudo apt install gcc-11

sudo apt install build-essential
- Ubuntu 18.04-20.04:

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test && sudo apt-get update -qq
sudo apt install gcc-11

- Windows:

ddalcino marked this conversation as resolved.
Show resolved Hide resolved
Expand All @@ -51,7 +56,7 @@ The following compilers should work:
brew install gcc
</details>

* [clang 6+](https://clang.llvm.org/)
* [clang 13+](https://clang.llvm.org/)
<details>
<summary>Install command</summary>

Expand Down Expand Up @@ -107,10 +112,15 @@ The following compilers should work:
<details>
<summary>Install Command</summary>

- Via pip - https://docs.conan.io/en/latest/installation.html#install-with-pip-recommended
- Via pip (requires Python 3.5+) - https://docs.conan.io/en/latest/installation.html#install-with-pip-recommended

pip install --user conan

Over time, you may need to upgrade Conan to maintain compatibility with the latest packages.
You can do that with:

pip install --user --upgrade conan

- Windows:

choco install conan -y
Expand All @@ -121,13 +131,19 @@ The following compilers should work:

</details>

3. [CMake 3.15+](https://cmake.org/)
3. [CMake 3.18+](https://cmake.org/)
<details>
<summary>Install Command</summary>

- Debian/Ubuntu:
- All platforms (if you have Python installed):

pip install --user cmake

- Ubuntu 21.04 or later:

sudo apt-get install cmake
sudo apt-get install cmake cmake-curses-gui

- Ubuntu 16.04-20.04: Follow instructions at [Kitware](https://apt.kitware.com/)

- Windows:

Expand All @@ -139,7 +155,7 @@ The following compilers should work:

</details>

### Optional Dependencies
### Strongly Recommended (but optional) Dependencies
#### C++ Tools
* [Doxygen](http://doxygen.nl/)
<details>
Expand Down Expand Up @@ -209,28 +225,3 @@ The following compilers should work:
https://github.com/include-what-you-use/include-what-you-use#how-to-install
</details>

#### GUI libraries
This project can be made to work with several optional GUI frameworks.

If desired, you should install the following optional dependencies as
directed by their documentation, linked here:

- [FLTK](https://www.fltk.org/doc-1.4/index.html)
- [GTKMM](https://www.gtkmm.org/en/documentation.html)
- [QT](https://doc.qt.io/)

The following dependencies can be downloaded automatically by CMake and Conan.
All you need to do to install them is to turn on a CMake flag during
configuration.
If you run into difficulty using them, please refer to their documentation,
linked here:

- [NANA](http://nanapro.org/en-us/documentation/)
- [SDL](http://wiki.libsdl.org/FrontPage)
- [IMGUI](https://github.com/ocornut/imgui/tree/master/docs):
This framework depends on SFML, and if you are using Linux, you may need
to install several of SFML's dependencies using your package manager. See
[the SFML build tutorial](https://www.sfml-dev.org/tutorials/2.5/compile-with-cmake.php)
for specifics.