- Notifications
You must be signed in to change notification settings - Fork0
Applied modern C/C++ in calculus, discrete mathematics, robotics and machine learning with CMake.
License
XuhuaHuang/EmbeddedProgramming
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
https://github.com/XuhuaHuang/EmbeddedProgramming
#include<❤>
This repositoryhopefully can lead you through themodern C++ world, with some of its popular tool chains.
Each topic is placed in individual folder. Projects are placed under each descriptively-named folders.
Most of the directories are provided with aCMakeLists.txt.
UsingCMake will be significantly easier than manually compiling all the files with your favorite compiler.
For your comfort, some of the files have required compilation command documented in the source file itself.
Prof. Charmaine Jirgens
My mentor to the programming world
Professor, Electronics Engineering and Information Technology
Heritage College, Gatineau, Quebec, Canada
Software does not run in a magic fairy aether powered by the fevered dreams of CS PhDs.
C/C++, Objective-C/C++
classperson{public:explicitperson() = default;explicitperson(const std::string& fn,const std::string& ln) : first(fn) , last(ln) { }explicitperson(std::string&& fn, std::string&& ln) : first(std::move(fn)) , last(std::move(ln)) { }person(const person& rhs) =default; person&operator=(const person&) =default;person(person&& rhs)noexcept =default; person&operator=(person&& rhs)noexcept =default;virtual~person()noexcept =default; [[nodiscard]]inline std::string&first_name() {return first; }inlineconst std::string&first_name()const {return first; } [[nodiscard]]inline std::string&last_name() {return last; }inlineconst std::string&last_name()const {return last; }private: std::string first; std::string last;};template<typename T>conceptprintable =requires(T t) { { std::cout << t } -> std::convertible_to<std::ostream&>;}structprint{constexprprint() = default;template<typename T>requires printable<T>inlineconstexprvoidoperator()(Tconst& t)const { std::cout << t <<"\n"; }};
Obtainvcpkg and Dependencies
cdgit clone https://github.com/microsoft/vcpkgcd vcpkgbash ./bootstrap-vcpkg.sh./vcpkg integrate install./vcpkg install gtest./vcpkg install qt6
Example to Compile a File Namedget_tie.cpp
g++ --versioncd ./StandardTemplateLibrary/Tupleg++ -g -Wall -Wextra -Wpedantic -c get_tie.cpp -o get_tie.exe -std=gnu++2b./get_tieTo UpdateMinGW on Windows
Run aPowerShell session with administrator privilege and run:
# Get the latest version of mingwmingw-get updatemingw-get upgrade# Verify the version of installed gcc and g++gcc --versiong++ --version
If you already have a configuredCMake for your operating system, simple change to the directory with suchCMakeLists.txt and run:
cmake.or
cmake ./CMakeLists.txt
For example, change to directory./DesignPatterns:
cd ./DesignPatternscmake ./CMakeLists.txtThe convention is to create a folder dedicated toCMake files, for example,build orbin:
cd ./DesignPatternsmkdir buildcd buildcmake ../CMakeLists.txt -G"Visual Studio 17 2022"
To build with popularNinja orMinGW generator:
# With Ninja generatorcmake ../CMakeLists.txt -G"Ninja"# With MinGW generatorcmake ../CMakeLists.txt -G"MinGW Makefiles"
To build the repository and run tests:
cmake. -Bbuildcd buildcmake --build.ctest --verbose
Functionality provided by separate module. A namespaceutil is created to better manage the functions.
Tests andGoogleTest are located within theUtil/tests folder.
namespaceutil {namespacedata_structure {}namespaceiife {}namespacelist {}namespacemath {namespacecartesian_plane {}namespaceeuclidean_space {} }namespaceparse {}namespacephysics {}namespacepointer {}namespacerange {}namespacetype {}namespacetype_safety {}namespacevector {}}
Contains solutions to some of the basic problem solving coding questions. Provided file name most likely describes the content.TheREADME.md has more handy notes when encountering those problems.
Click to see my HackerRank profile
Contains solutions to some of the basic problem solving coding questions.
Click to see my LeetCode profile
Popular concepts in Objective-C.Compiled in Windows usingGNUstep Core and providedGNUstep developer tools.
Contains projects carried along the coursework and includes some personal project as well.For example, building a terminal progress bar for visual effects and working withOpenGL library inC++.
About
Applied modern C/C++ in calculus, discrete mathematics, robotics and machine learning with CMake.
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.


