forgot to remove this

This commit is contained in:
Phuntsok Drak-pa 2019-03-19 10:15:16 +01:00
parent d14dd678d3
commit 0239487ffb

206
README.md
View File

@ -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
```