TU-Programmieren_2/lab3/modules
2025-04-09 10:22:44 +02:00
..
cmake init 2025-04-09 10:22:44 +02:00
iue-io init 2025-04-09 10:22:44 +02:00
iue-num init 2025-04-09 10:22:44 +02:00
iue-other init 2025-04-09 10:22:44 +02:00
iue-po init 2025-04-09 10:22:44 +02:00
iue-rnd init 2025-04-09 10:22:44 +02:00
iue-svg init 2025-04-09 10:22:44 +02:00
.clang-format init 2025-04-09 10:22:44 +02:00
.clangd init 2025-04-09 10:22:44 +02:00
.gitattributes init 2025-04-09 10:22:44 +02:00
.gitignore init 2025-04-09 10:22:44 +02:00
CMakeLists.txt init 2025-04-09 10:22:44 +02:00
CMakePresets.json init 2025-04-09 10:22:44 +02:00
compile_flags.txt init 2025-04-09 10:22:44 +02:00
README.md init 2025-04-09 10:22:44 +02:00

Helper libraries

Information for students

  • you do not need to copy any files from this repository "by-hand"
  • you do not need to clone this repo explicitly
  • you will make use of functions provided by these libraries in the exercises
  • these libraries will be configured as a git submodule in the respective exercises, this is why you need to clone with git clone --recursive ...
  • tentative: we will use these libraries to showcase differences when implementing the same functionality in C and C++

Overview

├── iue-io 				# reading and writing csv-files of numeric data, header-only
│   ├── ccsv.h
│   ├── ccsv.test.c
│   ├── csv.hpp
│   └── csv.test.cpp
├── iue-po				# minimalistic support for parsing command line options, header-only
│   ├── cpo.h
│   ├── cpo.test.c
│   ├── po.hpp
│   └── po.test.cpp
├── iue-num				# helper functions for numeric calculations with floating point values, header-only
│   ├── numerics.hpp
│   └── numerics.test.cpp
├── iue-rnd				# helper functions for generating random instances of values and generic objects, header-only
│   ├── random.hpp
│   └── random.test.cpp
├── iue-svg				# minimal svg-generator from geometric primitives (e.g. box/circle/triangle), header-only
│   ├── tags.hpp
│   ├── tags.test.cpp
│   ├── render.hpp
│   ├── render.test.cpp
│   ├── tree.hpp
│   └── tree.test.cpp
└── README.md			

config/build/test/install

# cmake -S . -B build
cmake --preset gcc-debug
cmake --build build
ctest --test-dir build --verbose
cmake --install build --prefix ./install
rm -rf build/ install/ # cleanup

fresh integration into an exercise

git submodule add -b main https://sgit.iue.tuwien.ac.at/360050/modules ./modules
git add modules
git commit -m "added modules as git-submodule"

pull for a submodule enabled exercise

cd exerciseX
git pull --recurse-submodules

bump to latest modules commit for an exercise

cd exerciseX
git submodule update --remote --merge modules
git add modules
git commit -m "bump modules to latest commit"

intended incorporation/usecase in an exercise

// task1.main.cpp
#include "iue-io/csv.hpp"
//...
// task1.main.c
#include "iue-io/ccsv.h"
//...
mkdir build
g++ -Imodules -std=c++20 task1.main.cpp -o build/task1_cpp && ./build/task1_cpp
gcc -Imodules -std=c11 task1.main.c -o build/task1_c && ./build/task1_c