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…
Reference in New Issue
Block a user