oop-template's People
oop-template's Issues
Tasks
- de menționat la tema 2 că o ierarhie trebuie să fie bază proprie, nu derivată dintr-o clasă predefinită (de exemplu
sf::Drawable
sausf::Shape
) - de menționat la tema 2 că noua derivată nu poate fi una existentă care a fost ștearsă și adăugată din nou
- theo543/asteroids@c8d81cd
- de adăugat eventual asta ca un cod comentat pe sfml branch theo543/asteroids@3a6dfa7
- theo543/asteroids@4746d68
- de reparat cache-ul de cmake
_deps
pe cppcheck/clang-tidy - https://pvs-studio.com/en/blog/posts/cpp/1053/
- SFML: add env variable for window name in scripts; thanks to @i2002 for discovering this issue
- leviaici/tema1-poo@7827396
- alexalex200/TEMA1-POO-Checkers@c4c98aa
- SFML with threads: NeonSkye/Proiect-OOP@0d960a4
- ?? 0xfabian/oop@2d6e2cd
- investigate warnings_as_errors issues: use https://cmake.org/cmake/help/latest/prop_tgt/COMPILE_WARNING_AS_ERROR.html#prop_tgt:COMPILE_WARNING_AS_ERROR
- prefix the names of the first 3 actions with Cppcheck, Sanitizers, Valgrind; cppcheck and clang-tidy (still optional) as separate workflows
- use default cppcheck to simplify setup
✔️
- use default cppcheck to simplify setup
- ?? remove custom mingw setup since gh actions now includes winlibs version
- skip msan setup on sfml because we do not run it anyway on this branch
- update cmake in cmakelists to 3.24 (runners have 3.25 as of 2023-01-05)
- remove cmakelists code duplication from setting sanitizers
- backport function to base branch
✔️
- backport function to base branch
- ?? tbd disable cppcheck ShadowArgument and rely on compiler warnings??
- use apt-fast??
- sync cu pc1-template
✔️
Tema 2: de scris un pic alternativă la cast cu dynamic_pointer_cast pt shared_ptr
Tema 3: exemplu de mixin: countable pt numărat totalul de obiecte; crtp ar fi modificări la structură, mixin ar fi modificări la comportament
Dezavantaje singleton cu CRTP: https://codereview.stackexchange.com/questions/255212/generic-meyers-singleton-implementation-in-c
Ezoterisme: https://stackoverflow.com/questions/3499101/when-do-we-need-a-template-construct
Make variable for archive name, move tag at the end of the name
Clang 14 -> clang 12 în cmakelists.txt:97
Retention 15 days
Rename bin/ to archive name
Matrix params for valgrind, sanitizers etc
NOTE!
valgrind cat tastatura.txt | ./main
would detect leaks for cat
! We must run cat tastatura.txt | valgrind ./main
- shallow clone in fetchcontent
✔️
Merging branches
# from main branch:
git merge --allow-unrelated-histories --strategy-option=theirs origin/sfml
# or the long way
git merge --allow-unrelated-histories origin/sfml
git checkout --theirs .
git add .
git commit -m "Add SFML lib"
Testing ssh with custom ssh key:
ssh -i ~/.ssh/gh_ed25519 -T [email protected]
Cloning with custom ssh key:
# -c sau --config
# -i de la identity
git clone -c core.sshCommand="ssh -i ~/.ssh/gh_ed25519" [email protected]:user/repo.git
- set CMake defines for CMAKE_INSTALL_PREFIX (and BUILD_SHARED_LIBS for SFML) if not already defined so the CMakeLists.txt is more self-contained
- branch with SFML template
- another branch with batteries included: by default add rlutil, random and digestpp, a header only CSV reader/writer, date (without time/tz?)? need some intuitive examples; make stats about other common deps
- patch rlutil to ignore
kbhit
andcls
- create patch files to add defines/undefines for
WIN32_MEAN_AND_LEAN
andNOMINMAX
in rlutil and csv-parser
- patch rlutil to ignore
- keep main without any ext libs (at least for now)
- refactor out some steps from
.github/workflows/cmake.yml
intoscripts/
- switch back to msvcrt for now;
try to fork & migrate some deps to ucrt -
target_compile_features(target PRIVATE cxx_std_20)
- workflow write permissions:
jobs:
build:
name: ...
runs-on: ...
permissions:
contents: write
- copy missing dlls (tbd what dlls mingw needs):
- name: Copy missing dlls
if: runner.os == 'Windows' && matrix.cxx == 'cl'
run: |
cp $(where ucrtbased.dll) \
$(where VCRUNTIME140_1D.dll) \
$(where MSVCP140D.dll) \
$(where VCRUNTIME140D.dll) \
artifacts/bin/
- note: these are for debugging; maybe also compile in release mode and archive both
- disable bogus MSVC warnings:
/wd4244 /wd4267
- sanitizers
- add
/fsanitize=address
compiler flag in MSVC and run the executable - https://docs.microsoft.com/en-us/cpp/sanitizers/asan
- it should be enabled on CI according to this
- adjust sanitizers flags https://www.jetbrains.com/help/clion/2022.2/google-sanitizers.html#CompilerFlags
- add
- cppcheck: enable inline suppressions, disable some warnings: useStlAlgorithm, (TBA)
- inline suppressions should be enabled already according to docs; to be tested
- rename
date.txt
totastatura.txt
- update deps (e.g. compilers, cppcheck)
no-install-recommends
- done, maybe one more update needed in September
- update minimum cmake version?? 3.24 for colorized output and warnings as errors; clion bundles 3.23 for now (2022.2)
- use tag for LLVM checkout: line 243:
git clone --depth=1 --branch=llvmorg-11.1.0 https://github.com/llvm/llvm-project
- limit workflow duration to 30 minutes
- Research using docker/podman+buildah instead of Linux vms
- where to store images? quay.io?
- use Debian slim image; alpine might not work
- when not using fetch content, write portable scripts to download/build deps
- use env vars for download location
- research the overhead of a package manager and how flexible it is for repos that do not use that package manager
- prefer vcpkg or cpm or something available as a self contained binary
- try not to use conan or bazel (I know that bazel is not a package manager; I could not figure out if bzlmod supports c++) because those require additional runtimes (Python and Java, respectively)
- if that project does not even use cmake, we are out of luck: search for a fork that adds cmake support or create the fork ourselves
- alternative CI providers: Circle CI, Semaphore CI, AppVeyor? Cannot use only docker because we need to build binaries for Windows and MacOS
- alternative build systems??
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.