From 29be65ea91d9946c350c8a65e90cecaabf03e8e4 Mon Sep 17 00:00:00 2001
From: Maximilien Siavelis <maximilien.siavelis@simulease.com>
Date: 周日, 14 1月 2018 21:11:59 +0800
Subject: [PATCH] adding an example

---
 example/example.cpp    |   44 ++++++++++++++++++++++
 example/CMakeLists.txt |   28 ++++++++++++++
 README.md              |   39 +++++++++++++------
 3 files changed, 98 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md
index 295c125..88c64b4 100644
--- a/README.md
+++ b/README.md
@@ -26,15 +26,12 @@
 The project comes out with a very large freedom of use for everyone (and it will always be). 
 It uses a BSD 3 clauses licensing schema. 
 
-Elsewhere on Internet
-=====================
- * Wiki main page:
- * Install and build :
- * Project web site :
-
-
 How to build
 ============
+
+## prerequisites
+GCC (Linux), MINGW or MSVC (Windows)
+cmake, boost, openssl (Linux/MINGW)
 
 ```
 git clone https://github.com/open-license-manager/open-license-manager.git
@@ -43,8 +40,7 @@
 cd build
 ```
 
-## on Linux :
-
+## on Linux
 ```
 cmake .. -DCMAKE_INSTALL_PREFIX=../install
 make
@@ -52,14 +48,12 @@
 ```
 
 ## on Windows (with MSVC 2010)
-
 ```
 cmake .. -G "Visual Studio 10 2010 Win64" -DCMAKE_INSTALL_PREFIX=../install
 cmake --build . --target install --config Release
 ```
 
 ## cross compile with MINGW on Linux
-
 ```
 x86_64-w64-mingw32.static-cmake .. -DCMAKE_INSTALL_PREFIX=../install
 make
@@ -69,12 +63,31 @@
 How to test
 ===========
 
-## on Linux :
+## on Linux
 ```
 make test
 ```
 
-## on Windows :
+## on Windows (MSVC)
 ```
 ctest -C Release
 ```
+
+How to use
+==========
+
+This simple example shows how to integrate open-licence-manager into your project
+
+```
+$ cd example
+$ cmake .
+$ make
+$ ./example
+license ERROR :
+    license file not found
+the pc signature is :
+    Jaaa-aaaa-MG9F-ZhBB
+$ ../install/bin/license_generator example -s Jaaa-aaaa-MG9F-ZhBB -o example.lic 
+$ ./example
+licence OK
+```
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
new file mode 100644
index 0000000..e6b1ee1
--- /dev/null
+++ b/example/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 3.0)
+
+link_directories (   "${CMAKE_CURRENT_SOURCE_DIR}/../install/lib" )
+include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/../install/include" )
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+
+if(MSVC)
+SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib )
+else(MSVC)
+set(CMAKE_FIND_LIBRARY_SUFFIXES .a .so)
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s -Wl,--exclude-libs,liblicense++_static.a")
+find_package(OpenSSL REQUIRED)
+endif(MSVC)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+
+add_executable(example example.cpp)
+
+target_link_libraries(example license++_static os base tools_base)
+
+if(NOT MSVC)
+target_link_libraries(example crypto pthread dl z)
+endif(NOT MSVC)
+
+if(MINGW)
+target_link_libraries(example iphlpapi)
+endif(MINGW)
diff --git a/example/example.cpp b/example/example.cpp
new file mode 100644
index 0000000..d8af95f
--- /dev/null
+++ b/example/example.cpp
@@ -0,0 +1,44 @@
+#include <iostream>
+#include <map>
+#include "api/license++.h"
+#include "pc-identifiers.h"
+
+using namespace std;
+
+int main(int argc, char *argv[])
+{
+    map<EVENT_TYPE, string> stringByEventType;
+    stringByEventType[LICENSE_OK                      ] = "OK ";
+    stringByEventType[LICENSE_FILE_NOT_FOUND          ] = "license file not found ";
+    stringByEventType[LICENSE_SERVER_NOT_FOUND        ] = "license server can't be contacted ";
+    stringByEventType[ENVIRONMENT_VARIABLE_NOT_DEFINED] = "environment variable not defined ";
+    stringByEventType[FILE_FORMAT_NOT_RECOGNIZED      ] = "license file has invalid format (not .ini file) ";
+    stringByEventType[LICENSE_MALFORMED               ] = "some mandatory field are missing, or data can't be fully read. ";
+    stringByEventType[PRODUCT_NOT_LICENSED            ] = "this product was not licensed ";
+    stringByEventType[PRODUCT_EXPIRED                 ] = "licence expired ";
+    stringByEventType[LICENSE_CORRUPTED               ] = "license signature didn't match with current license ";
+    stringByEventType[IDENTIFIERS_MISMATCH            ] = "Calculated identifier and the one provided in license didn't match";
+    stringByEventType[LICENSE_FILE_FOUND              ] = "licence file not found ";
+    stringByEventType[LICENSE_VERIFIED                ] = "licence verified ";
+    
+    const string licLocation("example.lic");
+    
+    LicenseInfo licenseInfo;
+    LicenseLocation licenseLocation;
+    licenseLocation.openFileNearModule = false;
+    licenseLocation.licenseFileLocation = licLocation.c_str();
+    licenseLocation.environmentVariableName = "";
+    EVENT_TYPE result = acquire_license("example", licenseLocation, &licenseInfo);
+    
+    if (result != LICENSE_OK){
+        PcSignature signature;
+        FUNCTION_RETURN generate_ok = generate_user_pc_signature(signature, ETHERNET);
+        
+        cout << "license ERROR :" << endl;
+        cout << "    " << stringByEventType[result].c_str() << endl;
+        cout << "the pc signature is :" << endl;
+        cout << "    " << signature << endl;
+    }
+    else
+        cout << "licence OK" << endl;
+}

--
Gitblit v1.9.1