-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
132 lines (116 loc) · 4.54 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# read : https://de.slideshare.net/DanielPfeifer1/cmake-48475415
# https://rix0r.nl/blog/2015/08/13/cmake-guide/
cmake_minimum_required(VERSION 3.9 FATAL_ERROR) #3.9 required to find boost 1.65
project(compare_folders VERSION 0.1 LANGUAGES CXX )
### FIND THE LIBRARIES
# Win32 only: Where to install and search for packages. Would default to "Program Files"
if(CMAKE_SYSTEM MATCHES "Windows")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
if("$ENV{CMAKE_PACKAGES_DIR}" STREQUAL "")
message(FATAL_ERROR "\n!!!!!!!!! FATAL ERROR !!!!!!!!!\nPlease define CMAKE_INSTALL_PREFIX or set a CMAKE_PACKAGES_DIR environment variable.\nDelete CMakeCache.txt then proceed.\n!!!!!!!!!")
else()
set(CMAKE_INSTALL_PREFIX $ENV{CMAKE_PACKAGES_DIR} CACHE PATH "..." FORCE)
endif()
endif()
set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX})
endif(CMAKE_SYSTEM MATCHES "Windows")
include(GNUInstallDirs)
# threads
find_package (Threads REQUIRED)
# boost
set(BOOST_ROOT $ENV{BOOST_DIR})
set(Boost_USE_STATIC_LIBS ON)
if(CMAKE_SYSTEM MATCHES "Windows")
set(Boost_USE_STATIC_RUNTIME ON)
endif()
find_package(Boost COMPONENTS filesystem system REQUIRED)
if(NOT Boost_FOUND)
message(FATAL_ERROR "\nBoost is mandatory.\nTry to export the root directory of your Boost installation as \"BOOST_DIR\".")
endif()
# my libraries
find_package(cryptopp REQUIRED)
find_package(rlutil REQUIRED)
### SOURCES
# library
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(SRC_DIR_LIB ${CMAKE_SOURCE_DIR}/src/lib)
set(INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
set(LIB_NAME "CompareFolders")
add_library(${LIB_NAME} ${SRC_DIR_LIB}/CCollectionInfo.hpp
${SRC_DIR_LIB}/CCollectionInfo.cpp
${SRC_DIR_LIB}/CFactoryInfo.hpp
${SRC_DIR_LIB}/CFactoryInfo.cpp
${SRC_DIR_LIB}/CompareFolders.cpp
${SRC_DIR_LIB}/Utilities.cpp
${SRC_DIR_LIB}/TDequeConcurrent.hpp
${SRC_DIR_LIB}/CProxyLogger.hpp
${INCLUDE_DIR}/CompareFolders.hpp
)
# applications
set(APP_COMPAREFOLDERS_NAME "compare_folders")
set(APP_SCANFOLDER_NAME "scan_folder")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(SRC_DIR_APPS ${CMAKE_SOURCE_DIR}/src/apps)
add_executable(${APP_COMPAREFOLDERS_NAME} ${SRC_DIR_APPS}/${APP_COMPAREFOLDERS_NAME}/main.cpp)
add_executable(${APP_SCANFOLDER_NAME} ${SRC_DIR_APPS}/${APP_SCANFOLDER_NAME}/main.cpp)
### COMPILER OPTIONS
# common
set(COMPILE_OPTIONS_MSVC "/W4" "/MP" "$<$<CONFIG:Debug>:/MTd>" "$<$<CONFIG:Release>:/MT>" "$<$<CONFIG:Release>:/WX>")
set(COMPILE_OPTIONS_UNIX "-Wall" "$<$<CONFIG:Release>:-Werror>" "-Wno-missing-braces") #"missing-braces" only emitted by Xcode (deprecated in GCC)
# library
target_include_directories(${LIB_NAME} PRIVATE ${Boost_INCLUDE_DIRS}
${SRC_DIR_LIB}
PUBLIC ${INCLUDE_DIR}
)
if(MSVC)
target_compile_options(
${LIB_NAME} PRIVATE
${COMPILE_OPTIONS_MSVC}
)
else()
target_compile_options(
${LIB_NAME} PRIVATE
${COMPILE_OPTIONS_UNIX}
)
endif(MSVC)
# applications
if(MSVC)
target_compile_options(
${APP_COMPAREFOLDERS_NAME} PRIVATE
${COMPILE_OPTIONS_MSVC}
)
target_compile_options(
${APP_SCANFOLDER_NAME} PRIVATE
${COMPILE_OPTIONS_MSVC}
)
else()
target_compile_options(
${APP_COMPAREFOLDERS_NAME} PRIVATE
${COMPILE_OPTIONS_UNIX}
)
target_compile_options(
${APP_SCANFOLDER_NAME} PRIVATE
${COMPILE_OPTIONS_UNIX}
)
endif(MSVC)
target_include_directories(${APP_COMPAREFOLDERS_NAME} PRIVATE
${SRC_DIR_APPS}/common
${INCLUDE_DIR}
)
target_include_directories(${APP_SCANFOLDER_NAME} PRIVATE
${SRC_DIR_APPS}/common
${INCLUDE_DIR}
)
### LINK
# library
target_link_libraries(${LIB_NAME} ${Boost_LIBRARIES} cryptopp-static)
set_property(TARGET ${LIB_NAME} PROPERTY CXX_STANDARD 14)
# applications
target_link_libraries(${APP_COMPAREFOLDERS_NAME} ${LIB_NAME} ${CMAKE_THREAD_LIBS_INIT})
set_property(TARGET ${APP_COMPAREFOLDERS_NAME} PROPERTY CXX_STANDARD 14)
target_link_libraries(${APP_SCANFOLDER_NAME} ${LIB_NAME} ${CMAKE_THREAD_LIBS_INIT})
set_property(TARGET ${APP_SCANFOLDER_NAME} PROPERTY CXX_STANDARD 14)
### TEST
enable_testing()
add_subdirectory(test)