How I Made A C++ Library
Bucephalus Studios
Ever wonder what it's like to make a C++ library? I just went through the process, and here are some of the things that I learned :)
My links: https://linktr.ee/bucephalus_studios
/*** Chapters ***/ 00:00 Intro 02:01 Original library design 03:00 Feedback on original design 04:27 Change 1: Use a namespace instead of a class 05:25 Change 2: Use pass by reference where appropriate 07:13 Change 3: Choose a C++ standard and optimize the code for it 08:31 Change 4: Add a testing program 11:59 Change 5: Add a benchmarking program 13:36 Change 6: Document the code as well as use a documentation generator 16:32 Change 7: Add a .clang-format file 18:29 Change 8: Choose a license 19:28 Feedback after changes
/***** My Library (stevensStringLib) *****/
Check out my C++ String Library here: https://github.com/Bucephalus-Studios/stevensStringLib
Julien Jorge’s review of my library: https://julien.jorge.st/posts/en/so-you-asked-for-feedback-stevensstringlib/
Reddit posts of my library: 1.https://www.reddit.com/r/cpp/comments/18hlkgd/working_on_an_easytouse_c_string_library/
2.https://www.reddit.com/r/cpp/comments/19546t1/i_took_your_advice_and_now_im_back_with_my/
/***** Tutorials, documentation, and resources for making your own library *****/
Documentation for each version of C++: https://en.cppreference.com/w/cpp
— Testing with Google Test — Google Test Github Repository: https://github.com/google/googletest How to test your code with Google Test: https://www.youtube.com/playlist?list=PL_dsdStdDXbo-zApdWB5XiF2aWpsqzV55 Google Test Documentation: https://google.github.io/googletest/ How to build your Google Test executable with CMake: https://www.youtube.com/watch?v=Lp1ifh9TuFI
— Benchmarking with Google Benchmark — Google Benchmark Github Repository: https://github.com/google/benchmark How to benchmark your code with Google Benchmark: https://www.youtube.com/watch?v=9VKR8u9odrA Google Benchmark Documentation: https://google.github.io/benchmark/user_guide.html
— Generate documentation with Doxygen — Doxygen Install: https://www.doxygen.nl/download.html How to use Doxygen: https://www.youtube.com/watch?v=pnnKzkNTo4w&lc=Ugwp4RtnvNNfZMSdN0Z4AaABAg
— Clang-Format —- Download of Clang-Format Editor (detect your code’s format and creates a .clang-format file): https://www.clangpowertools.com/clang-format-editor.html
— Licenses — Which license is right for you?: https://choosealicense.com/
/***** Advent of Code *****/ Advent of Code: https://adventofcode.com/ My AoC 2024 submissions: https://github.com/jeffstevens98/adventOfCode2023
/***** Assets used for video *****/
"Getting it Done" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 3.0 http://creativecommons.org/licenses/by/3.0
"Newer Wave" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
"Pookatori and Friends" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
"Voxel Revolution" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
"Bit Quest" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
"Theme for Harold (var. 1)" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
"Super Friendly" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/
Pass by reference graphic: https://pediaa.com/what-is-the-difference-between-pass-by-value-and-pass-by-reference/
Integral data types graphic: https://www.slideserve.com/ivi/integral-data-types-in-c
String_view graphic: https://hackingcpp.com/cpp/std/sequence_views.html
CMake Diagram: https://logins.github.io/programming/2020/05/17/CMakeInVisualStudio.html
Javadoc comments graphic: https://www.slideserve.com/jenna/cse-331
Cursed code example: https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fzjh4ruvqf0d61.jpg
Clang Format Detector Demo: https://www.youtube.com/watch?v=_EaU3VsDOJM ... https://www.youtube.com/watch?v=Lp5Og3Myr9Q
232832931 Bytes