Étape 3: Exemple de projet
Nous allons construire un projet exemple qui implémente notre scénario simple. Vous pouvez obtenir l’échantillon de github [4].
Exemple de structure de projet est assez simple. Nous avons deux scripts de compilation, lien symbolique vers Qmonix c ++ client et un seul fichier source :
. |__ 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. 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; }
Cette application simple titres lorsque le programme est démarré et gracieusement mis fin. Une fois qu’il démarre il entrer dans la boucle jusqu'à ce que vous tapez « exit ». Cela nous permet de tuer le programme par exemple avec « ctrl + c ». Dans un tel cas cas exit_app/sorti ne sera pas déclenché.