From b73dbca612aae25c40e96070983a8d96bec95fc4 Mon Sep 17 00:00:00 2001 From: Ruud Beukema Date: Wed, 10 Apr 2024 18:42:49 +0200 Subject: [PATCH] Add example for using the SigC++ library --- examples/libsigcplusplus/CMakeLists.txt | 20 ++++++++++++++++++++ examples/libsigcplusplus/main.cpp | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 examples/libsigcplusplus/CMakeLists.txt create mode 100644 examples/libsigcplusplus/main.cpp diff --git a/examples/libsigcplusplus/CMakeLists.txt b/examples/libsigcplusplus/CMakeLists.txt new file mode 100644 index 00000000..51fbdeca --- /dev/null +++ b/examples/libsigcplusplus/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) + +project(CPMLibSigCppExample) + +# ---- Dependencies ---- + +include(../../cmake/CPM.cmake) + +CPMAddPackage("gh:libsigcplusplus/libsigcplusplus#3.6.0") +if(libsigcplusplus_ADDED) + set(SIGCPP_INCLUDE_DIRS ${libsigcplusplus_SOURCE_DIR} ${CPM_PACKAGE_libsigcplusplus_BINARY_DIR} ) + set(SIGCPP_LIBRARY sigc-3.0) +endif() + +# ---- Create binary ---- + +add_executable(CPMLibSigCppExample main.cpp) +target_include_directories(CPMLibSigCppExample PUBLIC ${SIGCPP_INCLUDE_DIRS}) +target_link_libraries(CPMLibSigCppExample ${SIGCPP_LIBRARY}) +target_compile_features(CPMLibSigCppExample PRIVATE cxx_std_17) diff --git a/examples/libsigcplusplus/main.cpp b/examples/libsigcplusplus/main.cpp new file mode 100644 index 00000000..caaf753b --- /dev/null +++ b/examples/libsigcplusplus/main.cpp @@ -0,0 +1,18 @@ +#include +#include + +void example_callback() { + std::cout << "Hello World" << std::endl; +} + +sigc::signal signal_say_hi; + +int main() { + // Register callback + signal_say_hi.connect(sigc::ptr_fun(&example_callback)); + + // Emit signal, so that callback gets called + signal_say_hi.emit(); + + return 0; +}