initialized from cpp skeleton

This commit is contained in:
Pagwin 2024-04-08 13:46:02 -04:00 committed by Pagwin
commit 8241aa3e04
No known key found for this signature in database
GPG key ID: 81137023740CA260
7 changed files with 114 additions and 0 deletions

14
.gitignore vendored Normal file
View file

@ -0,0 +1,14 @@
CMakeCache.txt
CMakeFiles/
_deps/
*.a
*.o
Makefile
apps/cmake_install.cmake
cmake_install.cmake
src/cmake_install.cmake
.ninja_deps
.ninja_log
build.ninja
build
.cache

31
CMakeLists.txt Normal file
View file

@ -0,0 +1,31 @@
# This is a template I intend to use to create C++ cmake projects going forwards
# the structure takes heavily after https://cliutils.gitlab.io/modern-cmake/chapters/basics/structure.html
# This file takes heavily from https://gitlab.com/CLIUtils/modern-cmake/-/blob/master/examples/extended-project/CMakeLists.txt
cmake_minimum_required(VERSION 4.1.2)
project(project_name_here
VERSION 0.1
LANGUAGES CXX)
# setting this so compile_commands.json is generated for clangd
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
# allowances for debugging
set(CMAKE_CXX_FLAGS_DEBUG "-Og")
# release optimizations
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
# generally useful
set(CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wfloat-equal -Wundef -Wpointer-arith -Wcast-align -Wstrict-overflow=2 -Wunreachable-code -fsanitize=address,undefined -g3")
# for convenience if they're needed
#find_package(Boost REQUIRED)
#find_package(fmt REQUIRED)
# lib src code
add_subdirectory(src)
# app source code
add_subdirectory(apps)

37
CMakePresets.json Normal file
View file

@ -0,0 +1,37 @@
{
"version":10,
"cmakeMinimumRequired":{
"major": 4,
"minor": 1,
"patch": 2
},
"configurePresets":[{
"name":"default",
"generator": "Ninja",
"binaryDir": "./build",
"$comment":{"graphviz": "dependencies"}
}],
"buildPresets":[{
"name": "default",
"configurePreset":"default",
"jobs": 4
}],
"testPresets":[],
"workflowPresets":[
{
"name": "default",
"steps": [
{"type":"configure", "name":"default"},
{"type":"build", "name":"default"}
]
},
{
"name": "default-test",
"$comment":"TODO: add test when we add a test setup here",
"steps": [
{"type":"configure", "name":"default"},
{"type":"build", "name":"default"}
]
}
]
}

8
apps/CMakeLists.txt Normal file
View file

@ -0,0 +1,8 @@
# based heavily on https://gitlab.com/CLIUtils/modern-cmake/-/blob/master/examples/extended-project/apps/CMakeLists.txt
add_executable(exe_name exe_entry.cpp)
# example library link
#target_link_libraries(exe_name fmt::fmt)
target_compile_features(exe_name PRIVATE cxx_std_20)

4
apps/exe_entry.cpp Normal file
View file

@ -0,0 +1,4 @@
int main(void){
return 0;
}

20
src/CMakeLists.txt Normal file
View file

@ -0,0 +1,20 @@
# based heavily on https://gitlab.com/CLIUtils/modern-cmake/-/blob/master/examples/extended-project/src/CMakeLists.txt
# example from when I was doing raft cpp impl
#set(HEADER_LIST "${raft_cpp_impl_SOURCE_DIR}/include/raft/lib.hpp")
add_library(example_lib lib.cpp ${HEADER_LIST})
# We need this directory, and users of our library will need it too
target_include_directories(example_lib PUBLIC ../include)
#target_link_libraries(example_lib PRIVATE Boost::boost)
target_compile_features(example_lib PUBLIC cxx_std_17)
# IDEs should put the headers in a nice place
source_group(
TREE "${PROJECT_SOURCE_DIR}/include"
PREFIX "Header Files"
FILES ${HEADER_LIST})

0
src/lib.cpp Normal file
View file