Initial commit

This commit is contained in:
2025-02-02 14:43:08 +10:00
commit 3031290ba0
6 changed files with 215 additions and 0 deletions

102
.clang-format Normal file
View File

@@ -0,0 +1,102 @@
# Based on https://gist.github.com/YodaEmbedding/c2c77dc693d11f3734d78489f9a6eea4
# Attempts to format C++ similar to rustfmt, with some modifications
AccessModifierOffset: -2
AlignAfterOpenBracket: BlockIndent
AlignConsecutiveMacros: false
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: DontAlign
AlignOperands: false
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: false
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
FixNamespaceComments: true
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^<nova/.*\.(hpp|hh|h)>'
Priority: 0
CaseSensitive: false
- Regex: '^<.*\.(hpp|hh)>'
Priority: 1
CaseSensitive: false
- Regex: '^<.*\.h>'
Priority: 2
CaseSensitive: false
- Regex: '^<.*>'
Priority: 3
CaseSensitive: false
- Regex: '^".*\.(hpp|hh)"'
Priority: 4
CaseSensitive: false
- Regex: '^".*\.h"'
Priority: 5
CaseSensitive: false
IncludeIsMainRegex: '^$'
IndentCaseLabels: true
IndentPPDirectives: BeforeHash
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PackConstructorInitializers: CurrentLine
PointerAlignment: Left
ReferenceAlignment: Left
ReflowComments: false
SeparateDefinitionBlocks: Leave
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++20
TabWidth: 4
UseTab: Always
ColumnLimit: 120
PenaltyBreakAssignment: 50
PenaltyBreakBeforeFirstCallParameter: 40
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 100
PenaltyBreakOpenParenthesis: 50
PenaltyBreakScopeResolution: 80
PenaltyBreakString: 100
PenaltyBreakTemplateDeclaration: 100
PenaltyExcessCharacter: 100
PenaltyIndentedWhitespace: 50
PenaltyReturnTypeOnItsOwnLine: 70

15
.editorconfig Normal file
View File

@@ -0,0 +1,15 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
[*.{c,cpp,h,hpp}]
clang-format-style = file

42
.gitignore vendored Normal file
View File

@@ -0,0 +1,42 @@
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# Build directory
build/
# Cache directory
.cache/
# Editor directories
.vscode/
.idea/

44
CMakeLists.txt Normal file
View File

@@ -0,0 +1,44 @@
cmake_minimum_required(VERSION 3.20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
project(Example)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_options(
-Wall
-Wextra
-Wpedantic
-Wold-style-cast
)
add_executable(
${PROJECT_NAME}
src/main.cpp
)
# find_package(Example REQUIRED)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
# ${Example_INCLUDE_DIRS}
)
target_link_libraries(
${PROJECT_NAME}
# ${Example_LIBRARIES}
)
if (CMAKE_IMPORT_LIBRARY_SUFFIX)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND_EXPAND_LISTS
)
endif ()
add_custom_target(run
COMMAND ${PROJECT_NAME}
DEPENDS ${PROJECT_NAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

0
include/.gitkeep Normal file
View File

12
src/main.cpp Normal file
View File

@@ -0,0 +1,12 @@
#include <cstdlib>
#include <print>
int main(int argc, char** argv) {
std::println("Hello, World!");
for (int i = 0; i < argc; i++) {
std::println("argv[{}] = {}", i, argv[i]);
}
return EXIT_SUCCESS;
}