Code Monkey home page Code Monkey logo

oop-template's People

Contributors

mcmarius avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

oop-template's Issues

Tasks

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 and cls
    • create patch files to add defines/undefines for WIN32_MEAN_AND_LEAN and NOMINMAX in rlutil and csv-parser
  • keep main without any ext libs (at least for now)
  • refactor out some steps from .github/workflows/cmake.yml into scripts/
  • 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
  • cppcheck: enable inline suppressions, disable some warnings: useStlAlgorithm, (TBA)
    • inline suppressions should be enabled already according to docs; to be tested
  • rename date.txt to tastatura.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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.