From b3f744f56786437cb42d16b2ebd37a9dc0463161 Mon Sep 17 00:00:00 2001
From: hartbook <franck.dary@etu.univ-amu.fr>
Date: Tue, 3 Jul 2018 16:35:28 +0200
Subject: [PATCH] Updated CMakeLists to use Boost.program_options

---
 CMakeLists.txt                   |  8 ++++++--
 cmake/Modules/Findeigen3.cmake   | 16 ++++++++++++++++
 cmake/Modules/Findfasttext.cmake | 27 +++++++++++++++++++++++++++
 tests/CMakeLists.txt             |  2 ++
 tests/src/test_train.cpp         |  1 +
 5 files changed, 52 insertions(+), 2 deletions(-)
 create mode 100644 cmake/Modules/Findeigen3.cmake
 create mode 100644 cmake/Modules/Findfasttext.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c30ddfc..b99cff9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,11 +1,15 @@
 cmake_minimum_required(VERSION 2.8.7)
 project(macaon)
 
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
+
+find_package(dynet REQUIRED)
+find_package(eigen3 REQUIRED)
+find_package(Boost REQUIRED COMPONENTS program_options)
+
 set(CMAKE_VERBOSE_MAKEFILE 0)
 set(CMAKE_CXX_STANDARD 11)
 
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
-
 if(NOT CMAKE_BUILD_TYPE)
   set(CMAKE_BUILD_TYPE Release)
 endif()
diff --git a/cmake/Modules/Findeigen3.cmake b/cmake/Modules/Findeigen3.cmake
new file mode 100644
index 0000000..0c323bc
--- /dev/null
+++ b/cmake/Modules/Findeigen3.cmake
@@ -0,0 +1,16 @@
+# - Try to find eigen3
+# Once done this will define
+#  EIGEN3_FOUND - System has eigen3
+#  EIGEN3_INCLUDE_DIRS - The eigen3 include directories
+#  EIGEN3_LIBRARIES - The libraries needed to use eigen3
+#  EIGEN3_DEFINITIONS - Compiler switches required for using eigen3
+
+find_package(PkgConfig)
+  pkg_check_modules(PC_EIGEN3 QUIET eigen3)
+
+  find_path(EIGEN3_INCLUDE_DIR eigen3/model.h
+                HINTS ${PC_EIGEN3_INCLUDEDIR} ${PC_DYNET_INCLUDE_DIRS}
+                          PATH_SUFFIXES eigen3 )
+
+set(EIGEN3_LIBRARIES ${DYNET_LIBRARY} )
+set(EIGEN3_INCLUDE_DIRS ${DYNET_INCLUDE_DIR}/eigen3 )
diff --git a/cmake/Modules/Findfasttext.cmake b/cmake/Modules/Findfasttext.cmake
new file mode 100644
index 0000000..ee000a0
--- /dev/null
+++ b/cmake/Modules/Findfasttext.cmake
@@ -0,0 +1,27 @@
+# - Try to find fasttext
+# Once done this will define
+#  FASTTEXT_FOUND - System has fasttext
+#  FASTTEXT_INCLUDE_DIRS - The fasttext include directories
+#  FASTTEXT_LIBRARIES - The libraries needed to use fasttext
+#  FASTTEXT_DEFINITIONS - Compiler switches required for using fasttext
+
+find_package(PkgConfig)
+  pkg_check_modules(PC_FASTTEXT QUIET fasttext)
+
+  find_path(FASTTEXT_INCLUDE_DIR fasttext/fasttext.h
+                HINTS ${PC_FASTTEXT_INCLUDEDIR} ${PC_FASTTEXT_INCLUDE_DIRS}
+                          PATH_SUFFIXES fasttext )
+
+  find_library(FASTTEXT_LIBRARY NAMES fasttext
+                   HINTS ${PC_FASTTEXT_LIBDIR} ${PC_FASTTEXT_LIBRARY_DIRS} )
+
+  include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set FASTTEXT_FOUND to TRUE
+# if all listed variables are TRUE
+  find_package_handle_standard_args(fasttext  DEFAULT_MSG
+                                        FASTTEXT_LIBRARY FASTTEXT_INCLUDE_DIR)
+
+  mark_as_advanced(FASTTEXT_INCLUDE_DIR FASTTEXT_LIBRARY )
+
+  set(FASTTEXT_LIBRARIES ${FASTTEXT_LIBRARY} )
+  set(FASTTEXT_INCLUDE_DIRS ${FASTTEXT_INCLUDE_DIR}/fasttext )
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index c76bc3d..043734e 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -3,7 +3,9 @@ FILE(GLOB SOURCES src/*.cpp)
 add_executable(test_train src/test_train.cpp)
 target_link_libraries(test_train tape_machine)
 target_link_libraries(test_train trainer)
+target_link_libraries(test_train ${Boost_PROGRAM_OPTIONS_LIBRARY})
 
 add_executable(test_decode src/test_decode.cpp)
 target_link_libraries(test_decode tape_machine)
 target_link_libraries(test_decode decoder)
+target_link_libraries(test_train ${Boost_PROGRAM_OPTIONS_LIBRARY})
diff --git a/tests/src/test_train.cpp b/tests/src/test_train.cpp
index d2d1766..764bda5 100644
--- a/tests/src/test_train.cpp
+++ b/tests/src/test_train.cpp
@@ -1,5 +1,6 @@
 #include <cstdio>
 #include <cstdlib>
+#include <boost/program_options.hpp>
 #include "MCD.hpp"
 #include "Config.hpp"
 #include "TapeMachine.hpp"
-- 
GitLab