From 0be1fb815bd0433856cb218e5ed5303554557363 Mon Sep 17 00:00:00 2001 From: wqking Date: Fri, 11 Mar 2022 17:17:07 +0800 Subject: [PATCH] Added cmake-pkg-demo to demonstrate using eventpp as CMake package --- tests/cmake-pkg-demo/CMakeLists.txt | 23 +++++++++++++++ tests/cmake-pkg-demo/main.cpp | 45 +++++++++++++++++++++++++++++ tests/cmake-pkg-demo/readme.md | 28 ++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 tests/cmake-pkg-demo/CMakeLists.txt create mode 100644 tests/cmake-pkg-demo/main.cpp create mode 100644 tests/cmake-pkg-demo/readme.md diff --git a/tests/cmake-pkg-demo/CMakeLists.txt b/tests/cmake-pkg-demo/CMakeLists.txt new file mode 100644 index 0000000..9e1ddd2 --- /dev/null +++ b/tests/cmake-pkg-demo/CMakeLists.txt @@ -0,0 +1,23 @@ +project(eventpppkgdemo) + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 11) + +set(TARGET pkgdemo) + +set(SRC + main.cpp +) + +add_executable( + ${TARGET} + ${SRC} +) + +find_package(eventpp CONFIG REQUIRED) +target_link_libraries(${TARGET} PRIVATE eventpp::eventpp) + +# need this because https://github.com/Microsoft/vcpkg/issues/798 +find_path(EVENTPP_INCLUDE_DIR eventpp/eventqueue.h) +include_directories(${EVENTPP_INCLUDE_DIR}) diff --git a/tests/cmake-pkg-demo/main.cpp b/tests/cmake-pkg-demo/main.cpp new file mode 100644 index 0000000..59e9738 --- /dev/null +++ b/tests/cmake-pkg-demo/main.cpp @@ -0,0 +1,45 @@ +// eventpp library +// Copyright (C) 2018 Wang Qi (wqking) +// Github: https://github.com/wqking/eventpp +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Include the head +#include "eventpp/eventqueue.h" + +#include + +int main() +{ + eventpp::EventQueue &)> queue; + + queue.appendListener(3, [](const std::string & s, std::unique_ptr & n) { + std::cout << "Got event 3, s is " << s << " n is " << *n << std::endl; + }); + // The listener prototype doesn't need to be exactly same as the dispatcher. + // It would be find as long as the arguments is compatible with the dispatcher. + queue.appendListener(5, [](std::string s, const std::unique_ptr & n) { + std::cout << "Got event 5, s is " << s << " n is " << *n << std::endl; + }); + queue.appendListener(5, [](const std::string & s, std::unique_ptr & n) { + std::cout << "Got another event 5, s is " << s << " n is " << *n << std::endl; + }); + + // Enqueue the events, the first argument is always the event type. + // The listeners are not triggered during enqueue. + queue.enqueue(3, "Hello", std::unique_ptr(new int(38))); + queue.enqueue(5, "World", std::unique_ptr(new int(58))); + + // Process the event queue, dispatch all queued events. + queue.process(); + + return 0; +} + diff --git a/tests/cmake-pkg-demo/readme.md b/tests/cmake-pkg-demo/readme.md new file mode 100644 index 0000000..cf7a43b --- /dev/null +++ b/tests/cmake-pkg-demo/readme.md @@ -0,0 +1,28 @@ +# Demo for CMake package usage + +This folder demonstrates how to use eventpp as CMake package. +To build the demo program, + +1, Install eventpp as CMake package + +1.1, Install eventpp locally. + +In eventpp root folder, run the commands, +``` +mkdir build +cd build +cmake .. +sudo make install +``` + +2, Then + +``` +mkdir build +cd build +cmake .. -G"MinGW Makefiles" +mingw32-make.exe +``` + +If you use other making system rather than MingW, replace the -G generator and mingw32-make. +