forgot to remove this
This commit is contained in:
parent
d14dd678d3
commit
0239487ffb
206
README.md
206
README.md
@ -1,206 +0,0 @@
|
|||||||
# AwesomeCppTemplate
|
|
||||||
|
|
||||||
> This project is in its infancy and I plan to continue to improve. It is designed to use C++17. I hope people be able to create the desired C++ project files layout fast and simply. and also I'm very welcome to contributions.
|
|
||||||
|
|
||||||
My goal is to make C++ version of Python [cookiecutter](https://github.com/audreyr/cookiecutter). then people can create C++ project files layout very simply by a single line of command. I hope some contributors to participate.
|
|
||||||
|
|
||||||
Possibly, the project name "AwesomeCppTemplate" make people confused with C++ Template Programming but it's not :). My first choice for the name sucks. My bad... "C++FilesLayout" is more appropriate I think.
|
|
||||||
|
|
||||||
There a lot of useful opinions that I have to look at in Reddit thread for this project.
|
|
||||||
The link is [here](https://www.reddit.com/r/cpp/comments/b1u9fp/i_created_c17_cmake_conan_ninja_project_template/).
|
|
||||||
|
|
||||||
## Suggestion of C++ programming environment
|
|
||||||
|
|
||||||
I suggest using as much cross-platform open-source software as possible:
|
|
||||||
|
|
||||||
- build system generator: CMake
|
|
||||||
- build system: Ninja
|
|
||||||
- compiler: clang++
|
|
||||||
- IDE:
|
|
||||||
- Visual Studio Code
|
|
||||||
- Qt Creator
|
|
||||||
- static code analyzers:
|
|
||||||
- clang-tidy
|
|
||||||
- Cppcheck
|
|
||||||
- Clazy
|
|
||||||
- source code formatter: clang-format
|
|
||||||
- documentation generator: Doxygen
|
|
||||||
- package manager:
|
|
||||||
- Conan
|
|
||||||
- vcpkg
|
|
||||||
- libraries:
|
|
||||||
- Standard Library
|
|
||||||
- Boost
|
|
||||||
- string formatting: fmt
|
|
||||||
- logging: spdlog
|
|
||||||
- automated tests: Google Test / Google Mock
|
|
||||||
- GUI: Qt
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
### Ubuntu
|
|
||||||
---
|
|
||||||
|
|
||||||
1. Update and upgrade packages
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ sudo apt update && sudo apt upgrade -y
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Install Clang and LLVM (7 release)
|
|
||||||
|
|
||||||
To add the apt repo, find the appropriate one for your Ubuntu version below and append it to `/etc/apt/sources.list`
|
|
||||||
```
|
|
||||||
Trusty (14.04) - Last update : Tue, 26 Feb 2019 05:42:37 UTC / Revision: 354792
|
|
||||||
deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty main
|
|
||||||
deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty main
|
|
||||||
# 7
|
|
||||||
deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-7 main
|
|
||||||
deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-7 main
|
|
||||||
# 8
|
|
||||||
deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-8 main
|
|
||||||
deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-8 main
|
|
||||||
|
|
||||||
# Also add the following for the appropriate libstdc++
|
|
||||||
deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main
|
|
||||||
Xenial (16.04) - Last update : Thu, 14 Mar 2019 00:31:13 UTC / Revision: 356003
|
|
||||||
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial main
|
|
||||||
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial main
|
|
||||||
# 7
|
|
||||||
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main
|
|
||||||
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main
|
|
||||||
# 8
|
|
||||||
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
|
|
||||||
deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
|
|
||||||
Bionic (18.04) - Last update : Thu, 14 Mar 2019 03:23:34 UTC / Revision: 356096
|
|
||||||
# i386 not available
|
|
||||||
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
|
|
||||||
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
|
|
||||||
# 7
|
|
||||||
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main
|
|
||||||
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main
|
|
||||||
# 8
|
|
||||||
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main
|
|
||||||
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main
|
|
||||||
Cosmic (18.10) - Last update : Wed, 13 Mar 2019 12:53:46 UTC / Revision: 356030
|
|
||||||
# i386 not available
|
|
||||||
deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main
|
|
||||||
deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic main
|
|
||||||
# 7
|
|
||||||
deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic-7 main
|
|
||||||
deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic-7 main
|
|
||||||
# 8
|
|
||||||
deb http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic-8 main
|
|
||||||
deb-src http://apt.llvm.org/cosmic/ llvm-toolchain-cosmic-8 main
|
|
||||||
Disco (19.04) - Last update : Wed, 13 Mar 2019 12:42:07 UTC / Revision: 356006
|
|
||||||
# i386 not available
|
|
||||||
deb http://apt.llvm.org/disco/ llvm-toolchain-disco main
|
|
||||||
deb-src http://apt.llvm.org/disco/ llvm-toolchain-disco main
|
|
||||||
# 7
|
|
||||||
deb http://apt.llvm.org/disco/ llvm-toolchain-disco-7 main
|
|
||||||
deb-src http://apt.llvm.org/disco/ llvm-toolchain-disco-7 main
|
|
||||||
# 8
|
|
||||||
deb http://apt.llvm.org/disco/ llvm-toolchain-disco-8 main
|
|
||||||
deb-src http://apt.llvm.org/disco/ llvm-toolchain-disco-8 main
|
|
||||||
```
|
|
||||||
|
|
||||||
Update apt packages list:
|
|
||||||
```shell
|
|
||||||
$ sudo apt update
|
|
||||||
```
|
|
||||||
|
|
||||||
To retrieve the archive signature:
|
|
||||||
```shell
|
|
||||||
$ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
|
|
||||||
# Fingerprint: 6084 F3CF 814B 57C1 CF12 EFD5 15CF 4D18 AF4F 7421
|
|
||||||
```
|
|
||||||
|
|
||||||
To install just clang, lld and lldb:
|
|
||||||
```shell
|
|
||||||
$ sudo apt install clang-7 lldb-7 lld-7
|
|
||||||
```
|
|
||||||
|
|
||||||
To install all key packages:
|
|
||||||
```shell
|
|
||||||
# LLVM
|
|
||||||
$ sudo apt install libllvm-7-ocaml-dev libllvm7 llvm-7 llvm-7-dev llvm-7-doc llvm-7-examples llvm-7-runtime
|
|
||||||
|
|
||||||
# Clang and co
|
|
||||||
$ sudo apt install clang-7 clang-tools-7 clang-7-doc libclang-common-7-dev libclang-7-dev libclang1-7 clang-format-7 python-clang-7
|
|
||||||
|
|
||||||
# libfuzzer
|
|
||||||
$ sudo apt install libfuzzer-7-dev
|
|
||||||
|
|
||||||
# lldb
|
|
||||||
$ sudo apt install lldb-7
|
|
||||||
|
|
||||||
# lld (linker)
|
|
||||||
$ sudo apt install lld-7
|
|
||||||
|
|
||||||
# libc++
|
|
||||||
$ sudo apt install libc++-7-dev libc++abi-7-dev
|
|
||||||
|
|
||||||
# OpenMP
|
|
||||||
$ sudo apt install libomp-7-dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, link each `clang-7` and `clang++-7` to `clang` and `clang++`.
|
|
||||||
```shell
|
|
||||||
$ sudo ln -s /usr/bin/clang-7 /usr/bin/clang
|
|
||||||
$ sudo ln -s /usr/bin/clang++-7 /usr/bin/clang++
|
|
||||||
```
|
|
||||||
|
|
||||||
Check if all the packages are installed fine.
|
|
||||||
```shell
|
|
||||||
$ clang++ --version
|
|
||||||
clang version 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final)
|
|
||||||
Target: x86_64-pc-linux-gnu
|
|
||||||
Thread model: posix
|
|
||||||
InstalledDir: /usr/bin
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Install CMake
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ sudo apt install cmake
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Install Conan
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ sudo apt install python3
|
|
||||||
$ sudo apt install python3-pip
|
|
||||||
$ sudo pip3 install --upgrade pip
|
|
||||||
$ pip install conan
|
|
||||||
```
|
|
||||||
Then change default profile of conan:
|
|
||||||
```shell
|
|
||||||
$ conan profile new default --detect
|
|
||||||
$ conan profile update settings.compiler=clang++
|
|
||||||
$ conan profile update settings.compiler.version=7.0
|
|
||||||
$ conan profile update settings.compiler.libcxx=libc++
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Install Ninja
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ sudo apt install ninja-build
|
|
||||||
```
|
|
||||||
|
|
||||||
## Build examples
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ mkdir build && cd build
|
|
||||||
$ conan install ..
|
|
||||||
$ export CC=clang
|
|
||||||
$ export CXX=clang++
|
|
||||||
$ cmake .. -G Ninja
|
|
||||||
$ cmake --build .
|
|
||||||
```
|
|
||||||
|
|
||||||
Try running the example binary!
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ ./bin/md5
|
|
||||||
c3fcd3d76192e4007dfb496cca67e13b
|
|
||||||
```
|
|
Loading…
x
Reference in New Issue
Block a user