Skip to content

Commit 3924631

Browse files
committed
Work on readmes
1 parent e40690c commit 3924631

File tree

6 files changed

+124
-43
lines changed

6 files changed

+124
-43
lines changed

README.md

Lines changed: 70 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,71 +8,98 @@ The C++ CMake Project Template
88
[![Tokei](https://tokei.rs/b1/github/cginternals/cmake-init)](https://github.com/Aaronepower/tokei)
99
[![Setup Guide](https://img.shields.io/badge/cmake%20guide-wiki-blue.svg?style=flat)](https://github.com/cginternals/cmake-init/wiki/Setup-Guide)
1010

11-
cmake-init is a copy and paste template, that provides the following features:
12-
* Cross Platform
13-
* Windows
14-
* Linux
15-
* Mac
16-
* Libraries, Applications, Testing template
17-
* Documentation template
18-
* Installation, Packaging template
19-
* CMake find script template for defined libraries
2011

21-
The files of cmake-init are an instantiation of the templates containing:
22-
* Example app
23-
* Example lib
24-
* Example test
25-
* Example documentation
26-
* Example package
12+
*cmake-init* is a sophisticated copy & paste template for modern C and C++ projects.
13+
The main goals include support of all use cases around software development (programming, testing, Q&A, deployment, documentation) while being modular, flexible, and idomatic. *cmake-init* is therefore a collection of cmake best-practices.
2714

15+
The main target platforms are typical desktop, laptop, and server platforms. Currently supported are:
2816

29-
## Design Decisions
17+
* Windows
18+
* macOS
19+
* GNU/Linux
3020

31-
ToDo: revisit!
21+
The cmake-init template assumes you want to setup a project using
22+
* CMake (3.0 or above)
23+
* C/C++ compiler
3224

33-
#### Console vs. Windows App (Windows only)
3425

35-
decisions:
36-
* we do not use the msvc subsystem linker flag
37-
* we do not use the add_executable win32 property
38-
* instead the ```set_target_properties``` with the ```WIN32_EXECUTABLE``` flag on target executable is used
39-
* we use the same subsystem for all configurations of a single target (no switching between, e.g., debug and release)
26+
# Resources
4027

41-
rationale:
42-
typically, only released 'feature' applications are required to decide on their subsystem, and in the case of 'gui-heavy' applications the windows subsystem is preferred (since the std output is probably piped into widgets, logfiles, or even discard).
28+
* [Adaption Guide](#adaption-guide)
29+
* [Non-Goals](#non-goals)
30+
* [Module Documentation](#module-documentation)
31+
* [Core Modules](#core-modules)
32+
* [CMake Initialization](cmake-initialization)
33+
* [CMake Backward Compatibility](#cmake-backward-compatability)
34+
* [Project Meta Information](#project-meta-information)
35+
* [Project Meta Information Code Generation](#project-meta-information-code-generation)
36+
* [Project Build Options](#project-build-options)
37+
* [Maintainer Modules](#maintainer-modules)
38+
* [cmake-init Template Check](#cmake-init-template-check)
39+
* [Development Modules](#development-modules)
40+
* [Build Targets](#build-targets)
41+
* [Documentation](#documentation)
42+
* [Tests](#tests)
43+
* [Linter](#linter)
44+
* [Continuous Integration](#continuous-integration)
45+
* [Deployment](#deployment)
46+
* [Packaging](#packaging)
47+
* [Run-time Assets](#run-time-assets)
4348

44-
furthermore, console output is usually more relevant for development/debugging purposes, already using console or IDE with appropriate console output handling
49+
# Adaption Guide
4550

51+
# Non-Goals
4652

53+
In order to be usable in a deterministic, idiomatic fashion, we avoid the following approaches and features:
4754

48-
ToDo: Add missing content, bring into markdown form
55+
## Super-Build
4956

57+
Due to the current semantics of targets and CMake internals, combining multiple
58+
cmake-init projects into one super-build project is not officially supported.
59+
There are limited and restricting workarounds.
60+
Actual solution: treat each project separately and use explicit dependency management.
5061

51-
Scenarios covered in cmake-init:
62+
## High Abstraction
5263

64+
We use low abstractions to not build a language upon CMake a user has to learn.
5365

54-
1) Development
66+
## File Glob
5567

56-
The project is contained in a source directory for active development.
68+
Explicit source specification prevents erroneous cases when adding and removing
69+
sources from the project tree.
5770

58-
binaries: ./build
59-
rpath: absolute paths to all dependencies
60-
datapath: ..
71+
# Module Documentation
6172

73+
## Core Modules
6274

63-
2) Installation (default)
75+
### CMake Initialization
6476

65-
The project is installed in a self-contained directory, ready for being moved or copied to another location or computer.
77+
### CMake Backward Compatibility
6678

67-
binaries: ./bin
68-
rpath: $ORIGIN/../lib
69-
datapath: ..
79+
### Project Meta Information
7080

81+
### Project Meta Information Code Generation
7182

72-
3) Installation (unix system install)
83+
### Project Build Options
7384

74-
The project is installed globally on a system.
85+
## Maintainer Modules
7586

76-
binaries: /usr/[local/]bin
77-
rpath: empty
78-
datapath: /usr/[local/]share/<projectname>
87+
### cmake-init Template Check
88+
89+
## Development Modules
90+
91+
### Build Targets
92+
93+
### Documentation
94+
95+
### Tests
96+
97+
### Linter
98+
99+
### Continuous Integration
100+
101+
### Deployment
102+
103+
### Packaging
104+
105+
### Run-time Assets

cmake/README.md

Whitespace-only changes.
File renamed without changes.

deploy/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
# Deployment Types
3+
4+
## System Install
5+
6+
## Global Install
7+
8+
## Source Build
9+
10+
## Relocatable
11+
12+
# Packages and Installer
13+
14+
## Package Manager
15+
16+
# Components

docs/README.md

Whitespace-only changes.

source/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
# Target Types
3+
4+
## Command-line Executable
5+
6+
## GUI Executable
7+
8+
## Flexible Library
9+
10+
## Shared Library
11+
12+
## Static Library
13+
14+
## Plugin
15+
16+
## Header-only Library
17+
18+
## Virtual Library
19+
20+
## CMake-only Library
21+
22+
# Dependencies
23+
24+
# Build Options
25+
26+
# Compiler Features
27+
28+
# Source Code
29+
30+
# Tests
31+
32+
## Testing Systems
33+
34+
## External Testing
35+
36+
# Continuous Integration
37+
38+
# Linter

0 commit comments

Comments
 (0)