diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index b277e89..e569318 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## About: A root project for practicing C++ ## ## This project can be built to debug and run all nested projects ## ## Or, any subdirectory with a project() statement can be selected ## @@ -16,10 +16,32 @@ project( DESCRIPTION "A root project for several small cpp practice projects" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) add_compile_options("-Wall") +option(KLIPS_CCACHE "Enable ccache" ON) + +if (KLIPS_CCACHE) + find_program(SCCACHE_PATH sccache) + if(SCCACHE_PATH) + message(STATUS "[Klips] Found sccache: ${SCCACHE_PATH}") + set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PATH}) + set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PATH}) + else() + message(STATUS "[Klips] Failed to find sccache, falling back to ccache.") + find_program(CCACHE_PATH ccache) + if(CCACHE_PATH) + message(STATUS "[Klips] Found ccache: ${CCACHE_PATH}") + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PATH}) + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PATH}) + else() + message(WARNING "[Klips] Failed to find sccache and ccache. Compilation will not be cached.") + endif() + endif() +endif() + add_subdirectory(algorithms) add_subdirectory(catch2) add_subdirectory(cmake-example) @@ -28,4 +50,15 @@ add_subdirectory(datastructs) add_subdirectory(graphics) add_subdirectory(multithreading) add_subdirectory(patterns) -add_subdirectory(qt) + +find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets) +if (NOT Qt6_FOUND) + message( + WARNING + "[Klips] Qt examples will not be built.\n" + "On Ubuntu 24.04 Qt6 can be installed using apt:\n" + " sudo apt install qt6-base-dev qt6-tools-dev\n" + ) +else() + add_subdirectory(qt) +endif() diff --git a/cpp/algorithms/CMakeLists.txt b/cpp/algorithms/CMakeLists.txt index fbad495..8a3c509 100644 --- a/cpp/algorithms/CMakeLists.txt +++ b/cpp/algorithms/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing various algorithms in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/algorithms/graphs/CMakeLists.txt b/cpp/algorithms/graphs/CMakeLists.txt index a41cace..281e094 100644 --- a/cpp/algorithms/graphs/CMakeLists.txt +++ b/cpp/algorithms/graphs/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing algorithms using graphs in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/algorithms/graphs/object/CMakeLists.txt b/cpp/algorithms/graphs/object/CMakeLists.txt index 480cb19..130526d 100644 --- a/cpp/algorithms/graphs/object/CMakeLists.txt +++ b/cpp/algorithms/graphs/object/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice implementing and using object graphs in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-graphs-object graph.cpp diff --git a/cpp/algorithms/graphs/simple/CMakeLists.txt b/cpp/algorithms/graphs/simple/CMakeLists.txt index b22134d..c9eee91 100644 --- a/cpp/algorithms/graphs/simple/CMakeLists.txt +++ b/cpp/algorithms/graphs/simple/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice implementing and using simple graphs in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-graphs-simple graph.cpp diff --git a/cpp/algorithms/graphs/simple/lib-graph.cpp b/cpp/algorithms/graphs/simple/lib-graph.cpp index 0da13c2..bfffc8c 100644 --- a/cpp/algorithms/graphs/simple/lib-graph.cpp +++ b/cpp/algorithms/graphs/simple/lib-graph.cpp @@ -8,9 +8,8 @@ ################################################################################ */ -#include #include "lib-graph.hpp" - +#include void Graph::BFS(int startNode) { diff --git a/cpp/algorithms/graphs/simple/lib-graph.hpp b/cpp/algorithms/graphs/simple/lib-graph.hpp index 885ab45..91ed89d 100644 --- a/cpp/algorithms/graphs/simple/lib-graph.hpp +++ b/cpp/algorithms/graphs/simple/lib-graph.hpp @@ -15,6 +15,7 @@ #include #include #include +#include class Graph { diff --git a/cpp/algorithms/graphs/templated/CMakeLists.txt b/cpp/algorithms/graphs/templated/CMakeLists.txt index 86df5db..dc37eb7 100644 --- a/cpp/algorithms/graphs/templated/CMakeLists.txt +++ b/cpp/algorithms/graphs/templated/CMakeLists.txt @@ -14,5 +14,6 @@ project( DESCRIPTION "Practice implementing and using templated graphs in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable(algo-graphs-templated graph.cpp) diff --git a/cpp/algorithms/graphs/templated/lib-graph.hpp b/cpp/algorithms/graphs/templated/lib-graph.hpp index d86114c..ec89669 100644 --- a/cpp/algorithms/graphs/templated/lib-graph.hpp +++ b/cpp/algorithms/graphs/templated/lib-graph.hpp @@ -18,6 +18,7 @@ #include #include #include +#include /******************************************************************************/ diff --git a/cpp/algorithms/graphs/weighted/CMakeLists.txt b/cpp/algorithms/graphs/weighted/CMakeLists.txt index 4680dbe..a175c8a 100644 --- a/cpp/algorithms/graphs/weighted/CMakeLists.txt +++ b/cpp/algorithms/graphs/weighted/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice implementing and using weighted graphs in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-graphs-weighted graph.cpp diff --git a/cpp/algorithms/graphs/weighted/lib-graph.hpp b/cpp/algorithms/graphs/weighted/lib-graph.hpp index 26fa665..34c49bb 100644 --- a/cpp/algorithms/graphs/weighted/lib-graph.hpp +++ b/cpp/algorithms/graphs/weighted/lib-graph.hpp @@ -18,6 +18,7 @@ #include #include #include +#include /******************************************************************************/ diff --git a/cpp/algorithms/sorting/CMakeLists.txt b/cpp/algorithms/sorting/CMakeLists.txt index 2a590be..033ce3e 100644 --- a/cpp/algorithms/sorting/CMakeLists.txt +++ b/cpp/algorithms/sorting/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing various sorting algorithms in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/algorithms/sorting/insertion/CMakeLists.txt b/cpp/algorithms/sorting/insertion/CMakeLists.txt index 8ee95e8..4fcb6d7 100644 --- a/cpp/algorithms/sorting/insertion/CMakeLists.txt +++ b/cpp/algorithms/sorting/insertion/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing insertion sort in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-sort-insertion insertion-sort.cpp diff --git a/cpp/algorithms/sorting/merge/CMakeLists.txt b/cpp/algorithms/sorting/merge/CMakeLists.txt index c85d4f2..4598a40 100644 --- a/cpp/algorithms/sorting/merge/CMakeLists.txt +++ b/cpp/algorithms/sorting/merge/CMakeLists.txt @@ -14,6 +14,8 @@ project ( DESCRIPTION "A project for practicing merge sort in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") + add_executable( algo-sort-merge merge-sort.cpp lib-merge.cpp lib-merge.h diff --git a/cpp/algorithms/sorting/merge/lib-merge.cpp b/cpp/algorithms/sorting/merge/lib-merge.cpp index b31a4fe..da69de8 100644 --- a/cpp/algorithms/sorting/merge/lib-merge.cpp +++ b/cpp/algorithms/sorting/merge/lib-merge.cpp @@ -12,6 +12,7 @@ #include #include #include +#include void MergeSort(std::vector &array, size_t lhs, size_t rhs) { diff --git a/cpp/algorithms/sorting/quick/CMakeLists.txt b/cpp/algorithms/sorting/quick/CMakeLists.txt index 63da599..5fb5fc0 100644 --- a/cpp/algorithms/sorting/quick/CMakeLists.txt +++ b/cpp/algorithms/sorting/quick/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing quick sort in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-sort-quick quick-sort.cpp diff --git a/cpp/algorithms/sorting/radix/CMakeLists.txt b/cpp/algorithms/sorting/radix/CMakeLists.txt index cbcfd5e..0ae66f1 100644 --- a/cpp/algorithms/sorting/radix/CMakeLists.txt +++ b/cpp/algorithms/sorting/radix/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing radix sort in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-sort-radix radix-sort.cpp diff --git a/cpp/algorithms/sorting/selection/CMakeLists.txt b/cpp/algorithms/sorting/selection/CMakeLists.txt index b3cf0e8..3a18b0a 100644 --- a/cpp/algorithms/sorting/selection/CMakeLists.txt +++ b/cpp/algorithms/sorting/selection/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing selection sort in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-sort-select select-sort.cpp diff --git a/cpp/algorithms/trees/CMakeLists.txt b/cpp/algorithms/trees/CMakeLists.txt index 5e27b4a..11af03c 100644 --- a/cpp/algorithms/trees/CMakeLists.txt +++ b/cpp/algorithms/trees/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing algorithms using trees in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/algorithms/trees/binary/CMakeLists.txt b/cpp/algorithms/trees/binary/CMakeLists.txt index dcd8c25..916e3be 100644 --- a/cpp/algorithms/trees/binary/CMakeLists.txt +++ b/cpp/algorithms/trees/binary/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing BST algorithms" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-trees-bst driver.cpp diff --git a/cpp/algorithms/trees/redblack/CMakeLists.txt b/cpp/algorithms/trees/redblack/CMakeLists.txt index 9c1206a..841c4e0 100644 --- a/cpp/algorithms/trees/redblack/CMakeLists.txt +++ b/cpp/algorithms/trees/redblack/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing red-black tree algorithms" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( algo-trees-redblack driver.cpp diff --git a/cpp/algorithms/trees/redblack/redblack.h b/cpp/algorithms/trees/redblack/redblack.h index dc57053..97da986 100644 --- a/cpp/algorithms/trees/redblack/redblack.h +++ b/cpp/algorithms/trees/redblack/redblack.h @@ -12,6 +12,7 @@ #define REDBLACK_H #include +#include enum Color {Black, Red}; diff --git a/cpp/catch2/CMakeLists.txt b/cpp/catch2/CMakeLists.txt index 11e943b..17d2775 100644 --- a/cpp/catch2/CMakeLists.txt +++ b/cpp/catch2/CMakeLists.txt @@ -14,18 +14,22 @@ project( DESCRIPTION "Practice project for learning Catch2" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options(-Wall) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) Include(FetchContent) FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v3.0.1 + GIT_TAG v3.4.0 ) FetchContent_MakeAvailable(Catch2) -add_subdirectory(src) -add_subdirectory(test) +add_library(klips SHARED src/klips.cpp) +target_include_directories(klips PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) + +add_executable(test_klips src/test_klips.cpp) +target_link_libraries(test_klips PUBLIC Catch2::Catch2WithMain klips) diff --git a/cpp/catch2/src/CMakeLists.txt b/cpp/catch2/src/CMakeLists.txt deleted file mode 100644 index 07742f7..0000000 --- a/cpp/catch2/src/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################ -## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## -## About: Practice project for testing with catch2 framework ## -## ## -## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## -################################################################################ - -cmake_minimum_required(VERSION 3.15) - -project( - #[[NAME]] Catch2 - VERSION 1.0 - DESCRIPTION "Practice project for learning Catch2" - LANGUAGES CXX -) - -add_compile_options(-Wall) -add_definitions("-std=c++17") - -add_library(klips SHARED klips.cpp) -target_include_directories(klips PRIVATE ${CMAKE_SOURCE_DIR}/include) diff --git a/cpp/catch2/test/test_klips.cpp b/cpp/catch2/src/test_klips.cpp similarity index 98% rename from cpp/catch2/test/test_klips.cpp rename to cpp/catch2/src/test_klips.cpp index 439d469..88bfb7c 100644 --- a/cpp/catch2/test/test_klips.cpp +++ b/cpp/catch2/src/test_klips.cpp @@ -2,7 +2,8 @@ #include -#include "../bin/catch.hpp" +#include "catch2/catch_all.hpp" + #include "klips.hpp" #include "type_name.hpp" @@ -139,7 +140,7 @@ template <> template void test_config_get::run() { TEMPLATE_PRODUCT_TEST_CASE("Test", "[test]", test_config_get, (int, std::string)) { TT(); - TestType t; + // TestType t; test_config_get s; s.template run(); // TestType t; diff --git a/cpp/catch2/test/CMakeLists.txt b/cpp/catch2/test/CMakeLists.txt deleted file mode 100644 index 673e6fa..0000000 --- a/cpp/catch2/test/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################ -## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## -## About: Practice project for testing with catch2 framework ## -## ## -## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## -################################################################################ - -cmake_minimum_required(VERSION 3.15) - -project( - #[[NAME]] Catch2 - VERSION 1.0 - DESCRIPTION "Practice project for learning Catch2" - LANGUAGES CXX -) - -add_compile_options(-Wall) - -add_executable(test_klips test_klips.cpp) -target_link_libraries(test_klips PRIVATE Catch2::Catch2WithMain klips) -target_include_directories(test_klips PRIVATE ${CMAKE_SOURCE_DIR}/include) diff --git a/cpp/cmake-example/CMakeLists.txt b/cpp/cmake-example/CMakeLists.txt index bebd5a6..9184859 100644 --- a/cpp/cmake-example/CMakeLists.txt +++ b/cpp/cmake-example/CMakeLists.txt @@ -22,6 +22,7 @@ project ( DESCRIPTION "A basic CMake template for C++ projects" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # Include any directories the compiler may need include_directories(./include) diff --git a/cpp/cryptography/CMakeLists.txt b/cpp/cryptography/CMakeLists.txt index af34ed4..0e138f6 100644 --- a/cpp/cryptography/CMakeLists.txt +++ b/cpp/cryptography/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing cryptography in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/cryptography/columnar-transposition/CMakeLists.txt b/cpp/cryptography/columnar-transposition/CMakeLists.txt index 2cfd4f6..50e5bfd 100644 --- a/cpp/cryptography/columnar-transposition/CMakeLists.txt +++ b/cpp/cryptography/columnar-transposition/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice implementing columnar transposition in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( crypto-columnar-transposition driver.cpp diff --git a/cpp/datastructs/CMakeLists.txt b/cpp/datastructs/CMakeLists.txt index 09211a8..12da377 100644 --- a/cpp/datastructs/CMakeLists.txt +++ b/cpp/datastructs/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing various data structures in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/datastructs/binarysearchtree/CMakeLists.txt b/cpp/datastructs/binarysearchtree/CMakeLists.txt index 4c0155f..9de105a 100644 --- a/cpp/datastructs/binarysearchtree/CMakeLists.txt +++ b/cpp/datastructs/binarysearchtree/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a basic implementation of a BST" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-bst driver.cpp diff --git a/cpp/datastructs/binarysearchtree/bst.cpp b/cpp/datastructs/binarysearchtree/bst.cpp index 32b590f..4d9920c 100644 --- a/cpp/datastructs/binarysearchtree/bst.cpp +++ b/cpp/datastructs/binarysearchtree/bst.cpp @@ -10,10 +10,11 @@ #include "bst.h" +#include /******************************************************************************** -* Constructors, Destructors, Operators -*********************************************************************************/ + * Constructors, Destructors, Operators + *********************************************************************************/ /** Copy Assignment Operator * @brief Empty the calling object's root BinaryNode, and copy the rhs data diff --git a/cpp/datastructs/circledoublelist/CMakeLists.txt b/cpp/datastructs/circledoublelist/CMakeLists.txt index fb0e22d..222dec2 100644 --- a/cpp/datastructs/circledoublelist/CMakeLists.txt +++ b/cpp/datastructs/circledoublelist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "Project for testing circular doubly linked list implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-circular-doubly-linked-list driver.cpp diff --git a/cpp/datastructs/circledoublelist/circledoublelist.cpp b/cpp/datastructs/circledoublelist/circledoublelist.cpp index 7c7b46a..c5b8da9 100644 --- a/cpp/datastructs/circledoublelist/circledoublelist.cpp +++ b/cpp/datastructs/circledoublelist/circledoublelist.cpp @@ -10,6 +10,7 @@ #include "circledoublelist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/circlesinglelist/CMakeLists.txt b/cpp/datastructs/circlesinglelist/CMakeLists.txt index 5459a9d..bb152ea 100644 --- a/cpp/datastructs/circlesinglelist/CMakeLists.txt +++ b/cpp/datastructs/circlesinglelist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "Project for testing circular singly linked list implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-circular-singly-linked-list driver.cpp diff --git a/cpp/datastructs/circlesinglelist/circlesinglelist.cpp b/cpp/datastructs/circlesinglelist/circlesinglelist.cpp index 208b9b4..21d151a 100644 --- a/cpp/datastructs/circlesinglelist/circlesinglelist.cpp +++ b/cpp/datastructs/circlesinglelist/circlesinglelist.cpp @@ -10,6 +10,7 @@ #include "circlesinglelist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/doublelist/CMakeLists.txt b/cpp/datastructs/doublelist/CMakeLists.txt index 7db1398..0ec3f9b 100644 --- a/cpp/datastructs/doublelist/CMakeLists.txt +++ b/cpp/datastructs/doublelist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a doubly linked list implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-doubly-linked-list driver.cpp diff --git a/cpp/datastructs/doublelist/doublelist.cpp b/cpp/datastructs/doublelist/doublelist.cpp index e106dac..7b3a22e 100644 --- a/cpp/datastructs/doublelist/doublelist.cpp +++ b/cpp/datastructs/doublelist/doublelist.cpp @@ -10,6 +10,7 @@ #include "doublelist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/maxheap/CMakeLists.txt b/cpp/datastructs/maxheap/CMakeLists.txt index a946abc..885951d 100644 --- a/cpp/datastructs/maxheap/CMakeLists.txt +++ b/cpp/datastructs/maxheap/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a max heap implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-max-heap driver.cpp diff --git a/cpp/datastructs/maxheap/maxheap.cpp b/cpp/datastructs/maxheap/maxheap.cpp index 9d4af54..e8fb26f 100644 --- a/cpp/datastructs/maxheap/maxheap.cpp +++ b/cpp/datastructs/maxheap/maxheap.cpp @@ -10,10 +10,11 @@ #include "maxheap.h" +#include /******************************************************************************** -* Constructors, Destructors, Operators -*********************************************************************************/ + * Constructors, Destructors, Operators + *********************************************************************************/ /** default constructor * Constructs a heap with the given default values diff --git a/cpp/datastructs/queuelist/CMakeLists.txt b/cpp/datastructs/queuelist/CMakeLists.txt index 648f1a8..ab01fda 100644 --- a/cpp/datastructs/queuelist/CMakeLists.txt +++ b/cpp/datastructs/queuelist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "Project for testing queue implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-queue driver.cpp diff --git a/cpp/datastructs/queuelist/queuelist.cpp b/cpp/datastructs/queuelist/queuelist.cpp index 35da3dd..ddad442 100644 --- a/cpp/datastructs/queuelist/queuelist.cpp +++ b/cpp/datastructs/queuelist/queuelist.cpp @@ -10,6 +10,7 @@ #include "queuelist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/singlelist/CMakeLists.txt b/cpp/datastructs/singlelist/CMakeLists.txt index 49840df..1348dba 100644 --- a/cpp/datastructs/singlelist/CMakeLists.txt +++ b/cpp/datastructs/singlelist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a singly linked list implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-singly-linked-list driver.cpp diff --git a/cpp/datastructs/singlelist/singlelist.cpp b/cpp/datastructs/singlelist/singlelist.cpp index da6aafa..6141eb6 100644 --- a/cpp/datastructs/singlelist/singlelist.cpp +++ b/cpp/datastructs/singlelist/singlelist.cpp @@ -10,6 +10,7 @@ #include "singlelist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/stacklist/CMakeLists.txt b/cpp/datastructs/stacklist/CMakeLists.txt index 6f96090..fdba21d 100644 --- a/cpp/datastructs/stacklist/CMakeLists.txt +++ b/cpp/datastructs/stacklist/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a Stack implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-stack driver.cpp diff --git a/cpp/datastructs/stacklist/stacklist.cpp b/cpp/datastructs/stacklist/stacklist.cpp index 87ee96a..e48f0bc 100644 --- a/cpp/datastructs/stacklist/stacklist.cpp +++ b/cpp/datastructs/stacklist/stacklist.cpp @@ -10,6 +10,7 @@ #include "stacklist.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/datastructs/templates/CMakeLists.txt b/cpp/datastructs/templates/CMakeLists.txt index 62220d0..3248661 100644 --- a/cpp/datastructs/templates/CMakeLists.txt +++ b/cpp/datastructs/templates/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for practicing templated data structures in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_subdirectory(doublelist) add_subdirectory(queuelist) diff --git a/cpp/datastructs/templates/doublelist/CMakeLists.txt b/cpp/datastructs/templates/doublelist/CMakeLists.txt index 51d3368..3e7103b 100644 --- a/cpp/datastructs/templates/doublelist/CMakeLists.txt +++ b/cpp/datastructs/templates/doublelist/CMakeLists.txt @@ -14,5 +14,6 @@ project ( DESCRIPTION "A project for practicing templated doubly linked list implementations" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable(data-templates-doubly-linked-list driver.cpp) diff --git a/cpp/datastructs/templates/queuelist/CMakeLists.txt b/cpp/datastructs/templates/queuelist/CMakeLists.txt index 606dc06..13b5547 100644 --- a/cpp/datastructs/templates/queuelist/CMakeLists.txt +++ b/cpp/datastructs/templates/queuelist/CMakeLists.txt @@ -14,5 +14,6 @@ project ( DESCRIPTION "A project for practicing templated queue implementations" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable(data-templates-queue driver.cpp) diff --git a/cpp/datastructs/templates/stacklist/CMakeLists.txt b/cpp/datastructs/templates/stacklist/CMakeLists.txt index 19aae07..cb4fee6 100644 --- a/cpp/datastructs/templates/stacklist/CMakeLists.txt +++ b/cpp/datastructs/templates/stacklist/CMakeLists.txt @@ -14,5 +14,6 @@ project ( DESCRIPTION "A project for practicing templated Stack implementations" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable(data-templates-stack driver.cpp) diff --git a/cpp/datastructs/templates/vector/CMakeLists.txt b/cpp/datastructs/templates/vector/CMakeLists.txt index 14bf52c..12ea409 100644 --- a/cpp/datastructs/templates/vector/CMakeLists.txt +++ b/cpp/datastructs/templates/vector/CMakeLists.txt @@ -14,5 +14,6 @@ project ( DESCRIPTION "A project for practicing templated Vector implementations" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable(data-templates-vectors driver.cpp) diff --git a/cpp/datastructs/vector/CMakeLists.txt b/cpp/datastructs/vector/CMakeLists.txt index 0f931c1..78d54be 100644 --- a/cpp/datastructs/vector/CMakeLists.txt +++ b/cpp/datastructs/vector/CMakeLists.txt @@ -14,6 +14,7 @@ project ( DESCRIPTION "A project for testing a basic Vector implementation" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( data-vectors driver.cpp diff --git a/cpp/datastructs/vector/vector.cpp b/cpp/datastructs/vector/vector.cpp index 67019b8..144e58d 100644 --- a/cpp/datastructs/vector/vector.cpp +++ b/cpp/datastructs/vector/vector.cpp @@ -10,6 +10,7 @@ #include "vector.h" +#include /****************************************************************************** * Constructors, Destructors, Operators diff --git a/cpp/graphics/CMakeLists.txt b/cpp/graphics/CMakeLists.txt index bcbfeda..7b5f698 100644 --- a/cpp/graphics/CMakeLists.txt +++ b/cpp/graphics/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## About: A root project for practicing C++ ## ## This project can be built to debug and run all nested projects ## ## Or, any subdirectory with a project() statement can be selected ## @@ -16,6 +16,7 @@ project( DESCRIPTION "A root project for practicing graphics programming in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/graphics/opengl-cmake/CMakeLists.txt b/cpp/graphics/opengl-cmake/CMakeLists.txt index 6ea63ef..60ee37b 100644 --- a/cpp/graphics/opengl-cmake/CMakeLists.txt +++ b/cpp/graphics/opengl-cmake/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## ################################################################################ @@ -8,40 +8,46 @@ # Define CMake version cmake_minimum_required(VERSION 3.15) +include(FetchContent) project( #[[NAME]] OpenGL-Cmake DESCRIPTION "Example project for building OpenGL projects with CMake" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_library(graphics-lib-opengl src/lib-opengl-test.cpp) target_include_directories(graphics-lib-opengl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) # Find OpenGL package -find_package(OpenGL REQUIRED) -if (OPENGL_FOUND) - # Link opengl-test executable to OpenGL - target_include_directories(graphics-lib-opengl PUBLIC ${OPENGL_INCLUDE_DIR}) - target_link_libraries(graphics-lib-opengl PUBLIC ${OPENGL_LIBRARIES}) -else() +find_package(OpenGL) +if (NOT OPENGL_FOUND) message( - "Error: CMake was unable to find the OpenGL package\n" - "Please install OpenGL and try again\n" + "[Klips] Error: CMake was unable to find OpenGL.\n" + "On Ubuntu 24.04 OpenGL can be installed using apt:\n" + " sudo apt install libopengl-dev libgl1-mesa-dev mesa-common-dev libglu1-mesa-dev\n" ) endif() +# Link opengl-test executable to OpenGL +message(STATUS "[Klips] Found OpenGL: ${OPENGL_INCLUDE_DIR}") +target_include_directories(graphics-lib-opengl PUBLIC ${OPENGL_INCLUDE_DIR}) +target_link_libraries(graphics-lib-opengl PUBLIC ${OPENGL_LIBRARIES}) -# Find GLUT package -find_package(GLUT REQUIRED) -if (GLUT_FOUND) - # Link lib-opengl-test executable to GLUT - target_include_directories(graphics-lib-opengl PUBLIC ${GLUT_INCLUDE_DIR}) - target_link_libraries(graphics-lib-opengl PUBLIC ${GLUT_LIBRARIES}) -else() +find_package(GLUT QUIET) +if(NOT GLUT_FOUND) message( - "Error: CMake was unable to find the GLUT package\n" - "Please install GLUT (freeglut3-dev) and try again\n" + FATAL_ERROR + "[Klips] Failed to fetch GLUT. Could not find dependency X11 input libraries.\n" + "On Ubuntu 24.04 Xi can be installed using apt:\n" + " sudo apt install libxi-dev\n" + "Alternatively, on Ubuntu 24.04 GLUT can be installed with apt:\n" + " sudo apt install freeglut3-dev\n" ) endif() +message(STATUS "[Klips] Found GLUT: ${GLUT_INCLUDE_DIR}") +# Link lib-opengl-test executable to GLUT +target_include_directories(graphics-lib-opengl PUBLIC ${GLUT_INCLUDE_DIR}) +target_link_libraries(graphics-lib-opengl PUBLIC ${GLUT_LIBRARIES}) # Add test executable add_executable(graphics-cmake-opengl apps/test-gl.cpp) diff --git a/cpp/graphics/sdl-cmake/CMakeLists.txt b/cpp/graphics/sdl-cmake/CMakeLists.txt index 6ee0d07..29e7029 100644 --- a/cpp/graphics/sdl-cmake/CMakeLists.txt +++ b/cpp/graphics/sdl-cmake/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## ################################################################################ @@ -13,6 +13,7 @@ project( DESCRIPTION "Example project for building SDL projects with CMake" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # Add Library add_library( @@ -27,31 +28,30 @@ target_include_directories( # When calling library, include a directo ) # Search for SDL2 package -find_package(SDL2 REQUIRED sdl2) - -# If SDL2 was found successfully, link to lib-sdl-test -if (SDL2_FOUND) - # Any target that links with this library will also link to SDL2 - # + Because we choose PUBLIC visibility - target_include_directories(graphics-lib-sdl PUBLIC ${SDL2_INCLUDE_DIRS}) - target_link_libraries(graphics-lib-sdl PUBLIC "${SDL2_LIBRARIES}") - - # Creating executable - add_executable( - graphics-cmake-sdl # Exe name - apps/sdl-test.cpp # Exe Source(s) - ) - - # Linking the exe to library - target_link_libraries( - graphics-cmake-sdl # Executable to link - PRIVATE # Visibility - graphics-lib-sdl # Library to link - ) - -else() - message( - "Error: CMake was unable to find SDL2 package.\n" - "Please install the libsdl2-dev package and try again.\n" +find_package(SDL2 QUIET) +if (NOT SDL2_FOUND) + message(FATAL_ERROR + "[Klips] Failed to find SDL2.\n" + "On Ubuntu 24.04 SDL2 can be installed using apt:\n" + " sudo apt install libsdl2-dev\n" ) endif() +message(STATUS "[Klips] Found SDL2: ${SDL2_INCLUDE_DIRS}") + +# Any target that links with this library will also link to SDL2 +# + Because we choose PUBLIC visibility +target_include_directories(graphics-lib-sdl PUBLIC ${SDL2_INCLUDE_DIRS}) +target_link_libraries(graphics-lib-sdl PUBLIC "${SDL2_LIBRARIES}") + +# Creating executable +add_executable( + graphics-cmake-sdl # Exe name + apps/sdl-test.cpp # Exe Source(s) +) + +# Linking the exe to library +target_link_libraries( + graphics-cmake-sdl # Executable to link + PRIVATE # Visibility + graphics-lib-sdl # Library to link +) \ No newline at end of file diff --git a/cpp/multithreading/CMakeLists.txt b/cpp/multithreading/CMakeLists.txt index 439024c..58a57ea 100644 --- a/cpp/multithreading/CMakeLists.txt +++ b/cpp/multithreading/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice with multithreaded programming in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) add_compile_options("-Wall") diff --git a/cpp/multithreading/conditions/CMakeLists.txt b/cpp/multithreading/conditions/CMakeLists.txt index af82c09..6dc1f55 100644 --- a/cpp/multithreading/conditions/CMakeLists.txt +++ b/cpp/multithreading/conditions/CMakeLists.txt @@ -18,6 +18,7 @@ project( DESCRIPTION "Example of condition_variables in multithreaded C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( multithread-conditions driver.cpp diff --git a/cpp/multithreading/deadlock/CMakeLists.txt b/cpp/multithreading/deadlock/CMakeLists.txt index a6f8373..a179c6f 100644 --- a/cpp/multithreading/deadlock/CMakeLists.txt +++ b/cpp/multithreading/deadlock/CMakeLists.txt @@ -18,6 +18,7 @@ project( DESCRIPTION "Example and solution for deadlocks in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( multithread-deadlock driver.cpp diff --git a/cpp/multithreading/livelock/CMakeLists.txt b/cpp/multithreading/livelock/CMakeLists.txt index 4b00f33..5c2c73a 100644 --- a/cpp/multithreading/livelock/CMakeLists.txt +++ b/cpp/multithreading/livelock/CMakeLists.txt @@ -18,6 +18,7 @@ project( DESCRIPTION "Example and solution for livelocks in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( multithread-livelock driver.cpp diff --git a/cpp/multithreading/race-condition/CMakeLists.txt b/cpp/multithreading/race-condition/CMakeLists.txt index 4c79652..729d22e 100644 --- a/cpp/multithreading/race-condition/CMakeLists.txt +++ b/cpp/multithreading/race-condition/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "Example and solution for race conditions" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( multithread-race-condition driver.cpp diff --git a/cpp/patterns/CMakeLists.txt b/cpp/patterns/CMakeLists.txt index 8660e29..91ff0ca 100644 --- a/cpp/patterns/CMakeLists.txt +++ b/cpp/patterns/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "A project for practicing various design patterns in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/cpp/patterns/abstract-factory/CMakeLists.txt b/cpp/patterns/abstract-factory/CMakeLists.txt index 9d1d96c..6cc4aa9 100644 --- a/cpp/patterns/abstract-factory/CMakeLists.txt +++ b/cpp/patterns/abstract-factory/CMakeLists.txt @@ -13,6 +13,7 @@ project( DESCRIPTION "An example of the abstract factory design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/adapter/CMakeLists.txt b/cpp/patterns/adapter/CMakeLists.txt index 44f80a5..473e603 100644 --- a/cpp/patterns/adapter/CMakeLists.txt +++ b/cpp/patterns/adapter/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the adapter design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/adapter/adapter.hpp b/cpp/patterns/adapter/adapter.hpp index c97da31..ee37b2a 100644 --- a/cpp/patterns/adapter/adapter.hpp +++ b/cpp/patterns/adapter/adapter.hpp @@ -2,6 +2,7 @@ #ifndef ADAPTER_HPP #define ADAPTER_HPP +#include #include // Target implementation to adapt to a new interface diff --git a/cpp/patterns/bridge/CMakeLists.txt b/cpp/patterns/bridge/CMakeLists.txt index 270b039..523401c 100644 --- a/cpp/patterns/bridge/CMakeLists.txt +++ b/cpp/patterns/bridge/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the bridge design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/factory/CMakeLists.txt b/cpp/patterns/factory/CMakeLists.txt index 6cd71f5..6e0e806 100644 --- a/cpp/patterns/factory/CMakeLists.txt +++ b/cpp/patterns/factory/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the factory design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/observer/CMakeLists.txt b/cpp/patterns/observer/CMakeLists.txt index 5ce6e97..8de3ca8 100644 --- a/cpp/patterns/observer/CMakeLists.txt +++ b/cpp/patterns/observer/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the state design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/prototype/CMakeLists.txt b/cpp/patterns/prototype/CMakeLists.txt index 48eefb2..95cd090 100644 --- a/cpp/patterns/prototype/CMakeLists.txt +++ b/cpp/patterns/prototype/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the prototype design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/singleton/CMakeLists.txt b/cpp/patterns/singleton/CMakeLists.txt index 95d85a0..d529253 100644 --- a/cpp/patterns/singleton/CMakeLists.txt +++ b/cpp/patterns/singleton/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the singleton design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_executable( patterns-singleton main.cpp diff --git a/cpp/patterns/state/CMakeLists.txt b/cpp/patterns/state/CMakeLists.txt index 80aeae3..38af83e 100644 --- a/cpp/patterns/state/CMakeLists.txt +++ b/cpp/patterns/state/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the state design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/patterns/visitor/CMakeLists.txt b/cpp/patterns/visitor/CMakeLists.txt index 9f4cb0d..35d982c 100644 --- a/cpp/patterns/visitor/CMakeLists.txt +++ b/cpp/patterns/visitor/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "An example of the visitor design pattern in C++" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options("-Wall") add_executable( diff --git a/cpp/qt/CMakeLists.txt b/cpp/qt/CMakeLists.txt index 4d6c0d8..ee5e841 100644 --- a/cpp/qt/CMakeLists.txt +++ b/cpp/qt/CMakeLists.txt @@ -14,6 +14,7 @@ project( DESCRIPTION "A root project for several small Qt6 practice projects" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) add_compile_options("-Wall") diff --git a/cpp/qt/designer-plugin-collection/CMakeLists.txt b/cpp/qt/designer-plugin-collection/CMakeLists.txt index eb32921..8fa9453 100644 --- a/cpp/qt/designer-plugin-collection/CMakeLists.txt +++ b/cpp/qt/designer-plugin-collection/CMakeLists.txt @@ -14,6 +14,9 @@ project( DESCRIPTION "Example of a widget plugin collection for Qt Designer" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") +# Lowercase string to use as a slug for executable names for identification. +string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) include(GenerateExportHeader) @@ -51,43 +54,56 @@ endif() set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install") list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}") -find_package(Qt6 REQUIRED COMPONENTS UiPlugin Core Gui Widgets) +find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets) +if (NOT Qt6_FOUND) + message( + FATAL_ERROR + "[Klips] Error: CMake was unable to find Qt6 libraries.\n" + "The example will not be built until the build is configured with these packages installed.\n" + "On Ubuntu 24.04 Qt6 can be installed using apt:\n" + " sudo apt-get install qt6-base-dev qt6-tools-dev\n" + ) +endif() # Creating a library with two plugins for the collection. -qt_add_library(widget-plugin-library +set(WIDGET_PLUGIN_LIBRARY widget-plugin-library_${PROJECT_NAME_LOWER}) +qt_add_library(${WIDGET_PLUGIN_LIBRARY} textview.cpp textview.h widgetplugin.cpp widgetplugin.h ) -target_sources(widget-plugin-library PRIVATE +target_sources(${WIDGET_PLUGIN_LIBRARY} PRIVATE textview.cpp textview.h treeview.cpp treeview.h widgetplugin.cpp widgetplugin.h ) -set_target_properties(widget-plugin-library PROPERTIES +set_target_properties(${WIDGET_PLUGIN_LIBRARY} PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) -target_link_libraries(widget-plugin-library +target_link_libraries(${WIDGET_PLUGIN_LIBRARY} PUBLIC Qt::UiPlugin Qt::Core Qt::Gui Qt::Widgets ) -install(TARGETS widget-plugin-library +install(TARGETS ${WIDGET_PLUGIN_LIBRARY} RUNTIME DESTINATION "${QT_PLUGIN_LIBRARY_DIR}" BUNDLE DESTINATION "${QT_PLUGIN_LIBRARY_DIR}" LIBRARY DESTINATION "${QT_PLUGIN_LIBRARY_DIR}" ) -generate_export_header(widget-plugin-library) +generate_export_header(${WIDGET_PLUGIN_LIBRARY} + BASE_NAME widget_plugin_library + EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/widget-plugin-library_export.h" +) # Creating the collection - -qt_add_library(widget-plugin-collection +set(WIDGET_PLUGIN_COLLECTION widget-plugin-collection_${PROJECT_NAME_LOWER}) +qt_add_library(${WIDGET_PLUGIN_COLLECTION} widgetplugincollection.cpp widgetplugincollection.h ) -target_link_libraries(widget-plugin-collection - Qt6::Widgets Qt6::UiPlugin widget-plugin-library +target_link_libraries(${WIDGET_PLUGIN_COLLECTION} + Qt6::Widgets Qt6::UiPlugin ${WIDGET_PLUGIN_LIBRARY} ) -install(TARGETS widget-plugin-collection +install(TARGETS ${WIDGET_PLUGIN_COLLECTION} RUNTIME DESTINATION "${QT_PLUGIN_INSTALL_DIR}" BUNDLE DESTINATION "${QT_PLUGIN_INSTALL_DIR}" LIBRARY DESTINATION "${QT_PLUGIN_INSTALL_DIR}" @@ -101,10 +117,11 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/app-dir.h.in" @ONLY ) -qt_add_executable(widget-app +set(WIDGET_APP widget-app_${PROJECT_NAME_LOWER}) +qt_add_executable(${WIDGET_APP} widgetapp.cpp widgetapp.h widgetapp.ui main.cpp ) -target_link_libraries(widget-app - PRIVATE Qt::Widgets widget-plugin-library +target_link_libraries(${WIDGET_APP} + PRIVATE Qt::Widgets ${WIDGET_PLUGIN_LIBRARY} ) diff --git a/cpp/qt/designer-plugin-collection/app-dir.h b/cpp/qt/designer-plugin-collection/app-dir.h index 5a37bb5..239b368 100644 --- a/cpp/qt/designer-plugin-collection/app-dir.h +++ b/cpp/qt/designer-plugin-collection/app-dir.h @@ -1,6 +1,6 @@ #ifndef APPDIR_H_IN #define APPDIR_H_IN -#define APP_DIR "/home/kapper/Code/klips/cpp/qt/designer-plugin-collection" +#define APP_DIR "/media/shaun/Storage/Code/klips/cpp/qt/designer-plugin-collection" #endif // APPDIR_H_IN diff --git a/cpp/qt/designer-plugin/CMakeLists.txt b/cpp/qt/designer-plugin/CMakeLists.txt index df170ac..a70d7db 100644 --- a/cpp/qt/designer-plugin/CMakeLists.txt +++ b/cpp/qt/designer-plugin/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## About: Example of making widget plugins for Qt Designer ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## @@ -14,6 +14,9 @@ project( DESCRIPTION "Example of a widget plugin for Qt Designer" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") +# Lowercase string to use as a slug for executable names for identification. +string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) include(GenerateExportHeader) @@ -42,35 +45,44 @@ endif() set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install") list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}") -find_package(Qt6 REQUIRED COMPONENTS UiPlugin Core Gui Widgets) +find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets) +if (NOT Qt6_FOUND) + message( + FATAL_ERROR + "[Klips] Error: CMake was unable to find Qt6 libraries.\n" + "The example will not be built until the build is configured with these packages installed.\n" + "On Ubuntu 24.04 Qt6 can be installed using apt:\n" + " sudo apt-get install qt6-base-dev qt6-tools-dev\n" + ) +endif() # Creating the plugin - -qt_add_library(widget-plugin) -target_sources(widget-plugin PRIVATE +set(WIDGET_PLUGIN widget-plugin_${PROJECT_NAME_LOWER}) +qt_add_library(${WIDGET_PLUGIN}) +target_sources(${WIDGET_PLUGIN} PRIVATE text-view.cpp text-view.h widget-plugin.cpp widget-plugin.h ) -set_target_properties(widget-plugin PROPERTIES +set_target_properties(${WIDGET_PLUGIN} PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) -target_link_libraries(widget-plugin PUBLIC +target_link_libraries(${WIDGET_PLUGIN} PUBLIC Qt::UiPlugin Qt::Core Qt::Gui Qt::Widgets ) -install(TARGETS widget-plugin +install(TARGETS ${WIDGET_PLUGIN} RUNTIME DESTINATION "${QT_PLUGIN_INSTALL_DIR}" BUNDLE DESTINATION "${QT_PLUGIN_INSTALL_DIR}" LIBRARY DESTINATION "${QT_PLUGIN_INSTALL_DIR}" ) # Application that will use the widget plugin - -qt_add_executable(widget-app +set(WIDGET_APP widget-app_${PROJECT_NAME_LOWER}) +qt_add_executable(${WIDGET_APP} widget-app.cpp widget-app.h widget-app.ui main.cpp ) -target_link_libraries(widget-app PRIVATE - Qt::Widgets widget-plugin +target_link_libraries(${WIDGET_APP} PRIVATE + Qt::Widgets ${WIDGET_PLUGIN} ) diff --git a/cpp/qt/designer/CMakeLists.txt b/cpp/qt/designer/CMakeLists.txt index 9db7f86..7e08856 100644 --- a/cpp/qt/designer/CMakeLists.txt +++ b/cpp/qt/designer/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## About: Practice project for using Qt Designer with custom C++ widgets ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice using Qt designer for desktop applications" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options(-Wall) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -28,7 +29,16 @@ set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/6.3.1/gcc_64/" CACHE PATH "Path to Qt6") list(APPEND CMAKE_PREFIX_PATH "${QT_DIR}") -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) +find_package(Qt6 COMPONENTS Core Gui Widgets) +if (NOT Qt6_FOUND) + message( + FATAL_ERROR + "[Klips] Error: CMake was unable to find Qt6 libraries.\n" + "The example will not be built until the build is configured with these packages installed.\n" + "On Ubuntu 24.04 Qt6 can be installed using apt:\n" + " sudo apt-get install qt6-base-dev qt6-tools-dev\n" + ) +endif() qt_add_executable(designer designer.cpp designer.h designer.ui diff --git a/cpp/qt/slots/CMakeLists.txt b/cpp/qt/slots/CMakeLists.txt index 95d116b..9266a88 100644 --- a/cpp/qt/slots/CMakeLists.txt +++ b/cpp/qt/slots/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################################################ ## Author: Shaun Reed ## -## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ## +## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ## ## About: Practice project for using signals and slots in Qt ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## @@ -14,6 +14,7 @@ project( DESCRIPTION "Practice using signals and slots in Qt 6" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") add_compile_options(-Wall) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -28,7 +29,16 @@ set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/6.3.1/gcc_64/" CACHE PATH "Path to Qt6") list(APPEND CMAKE_PREFIX_PATH "${QT_DIR}") -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) +find_package(Qt6 COMPONENTS Core Gui Widgets) +if (NOT Qt6_FOUND) + message( + FATAL_ERROR + "[Klips] Error: CMake was unable to find Qt6 libraries.\n" + "The example will not be built until the build is configured with these packages installed.\n" + "On Ubuntu 24.04 Qt6 can be installed using apt:\n" + " sudo apt-get install qt6-base-dev qt6-tools-dev\n" + ) +endif() qt_add_executable(slots text-view.cpp text-view.h diff --git a/cpp/qt/slots/text-view.h b/cpp/qt/slots/text-view.h index f9427ca..a325e9e 100644 --- a/cpp/qt/slots/text-view.h +++ b/cpp/qt/slots/text-view.h @@ -22,7 +22,7 @@ public: public: signals: - void sendTest()QWidget; + void sendTest(); private: signals: diff --git a/esp/cpp/04_esp-idf-arduino/CMakeLists.txt b/esp/cpp/04_esp-idf-arduino/CMakeLists.txt index c64d875..697df05 100644 --- a/esp/cpp/04_esp-idf-arduino/CMakeLists.txt +++ b/esp/cpp/04_esp-idf-arduino/CMakeLists.txt @@ -12,6 +12,7 @@ project( DESCRIPTION "Example ESP-IDF cmake project" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # For writing pure cmake components, see the documentation # https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components diff --git a/esp/cpp/05_temp-humidity-web/CMakeLists.txt b/esp/cpp/05_temp-humidity-web/CMakeLists.txt index 55d2aaf..fd7037d 100644 --- a/esp/cpp/05_temp-humidity-web/CMakeLists.txt +++ b/esp/cpp/05_temp-humidity-web/CMakeLists.txt @@ -12,6 +12,7 @@ project( DESCRIPTION "Temperature and humidity from DHT sensor served on a web page" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # For writing pure cmake components, see the documentation # https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components diff --git a/esp/cpp/06_i2c-scanner/CMakeLists.txt b/esp/cpp/06_i2c-scanner/CMakeLists.txt index c3e8d95..5fc5c81 100644 --- a/esp/cpp/06_i2c-scanner/CMakeLists.txt +++ b/esp/cpp/06_i2c-scanner/CMakeLists.txt @@ -12,6 +12,7 @@ project( DESCRIPTION "Simple I2C device scanner" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # For writing pure cmake components, see the documentation # https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND) diff --git a/esp/cpp/07_lcd-panel-i2c/CMakeLists.txt b/esp/cpp/07_lcd-panel-i2c/CMakeLists.txt index e923c1f..0d720e4 100644 --- a/esp/cpp/07_lcd-panel-i2c/CMakeLists.txt +++ b/esp/cpp/07_lcd-panel-i2c/CMakeLists.txt @@ -12,6 +12,7 @@ project( DESCRIPTION "Using the SSD1306 LCD display with ESP-IDF and LVGL over I2C" LANGUAGES CXX ) +message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}") # For writing pure cmake components, see the documentation # https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND)