Stap 3: Voorbeeldproject
Laten we bouwen een steekproef project dat onze eenvoudige scenario implementeert. Kunt u het monster van github [4].
Voorbeeld projectstructuur is vrij eenvoudig. We hebben een paar build scripts, symbolische link naar Qmonix c ++ client en een enkele bronbestand:
. |__ CMakeLists.txt |__ Makefile |__ lib | |__ qmonix -> ../../../ |__ src |__ main.cpp
1. CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)project (AppExitTracking CXX)set (CMAKE_BUILD_TYPE "Release") set (CMAKE_CXX_FLAGS "-Wall -Wextra -Werror -pedantic -ggdb -std=c++98")set (SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") file (GLOB_RECURSE SRC_FILES "${SRC_DIR}/*.cpp")set (EXIT_APP "exit_app") add_executable (${EXIT_APP} ${SRC_FILES}) target_link_libraries ("${EXIT_APP}" "curl" "qmonix")add_subdirectory ("lib/qmonix") include_directories ("${CMAKE_CURRENT_SOURCE_DIR}/lib/qmonix/include")
2. de Makefile:
BUILD_DIR = buildall: cmake .PHONY: allcmake: $(BUILD_DIR) cd $(BUILD_DIR); cmake $(CURDIR); make .PHONY: cmake$(BUILD_DIR): mkdir -p $ $(BUILD_DIR)/exit_app .PHONY: runclean: rm -rf $(BUILD_DIR) .PHONY: clean
3. main.cpp:
#include <iostream>#include <qmonix/qmonix.hpp> #include <qmonix/tracker.hpp> #include <qmonix/event_dispatcher.hpp>using namespace std; using namespace qmonix;int main(void) { tracker *qtrack = new tracker( new event_dispatcher("http://localhost:8337/event/")); qtrack->fire("exit_app/started"); qtrack->dispatch(); string command = ""; while (command != "exit") { cout << "Qmonix client version: " << qmonix::version << endl; cout << "Type 'exit' to quit." << endl; cin >> command; } qtrack->fire("exit_app/exited"); qtrack->dispatch(); delete qtrack; return 0; }
Deze eenvoudige toepassing wordt bijgehouden wanneer het programma wordt gestart en sierlijk beëindigd. Zodra het wordt gestart wordt de lus totdat u Typ "exit". Hierdoor is ons te doden het programma bijvoorbeeld met "ctrl + c". In dat geval geval zullen exit_app/weggegaan niet worden ontslagen.