-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
87 lines (72 loc) · 2.4 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
project("RevKit" CXX)
cmake_minimum_required(VERSION 2.8.9)
add_definitions(-std=c++11 -g -DBOOST_RESULT_OF_USE_DECLTYPE)
include(CTest)
# Some user defined macros (INFO: maybe they can be moved somewhere else)
set(ext_libraries "" CACHE STRING "external libraries" FORCE)
function(add_ext_library library)
if ("${ext_libraries}" STREQUAL "")
set(ext_libraries "${library}" CACHE STRING "external libraries" FORCE)
else()
set(ext_libraries "${ext_libraries};${library}" CACHE STRING "external libraries" FORCE)
endif()
endfunction(add_ext_library)
macro(subdirlist result curdir)
file(GLOB children ${curdir} ${curdir}/*)
set(dirlist "")
foreach(child ${children})
if(IS_DIRECTORY ${child})
get_filename_component(base_name ${child} NAME_WE)
set(dirlist ${dirlist} ${base_name})
endif()
endforeach()
set(${result} ${dirlist})
endmacro()
macro(srcdirlist result curdir)
if("${revkit_PACKAGES}" STREQUAL "")
subdirlist(${result} ${curdir})
else()
set(${result} ${revkit_PACKAGES})
endif()
endmacro()
# Dependencies
set( MAIN_Boost_LIBRARIES unit_test_framework regex filesystem graph program_options system )
find_package(Boost REQUIRED COMPONENTS ${MAIN_Boost_LIBRARIES} )
include_directories(${Boost_INCLUDE_DIR} ext/include)
link_directories(${CMAKE_SOURCE_DIR}/ext/lib)
add_subdirectory(ext)
# Options
option(revkit_ENABLE_PROGRAMS "build programs" on)
option(revkit_ENABLE_TESTS "build tests" on)
option(revkit_BUILD_SHARED "build shared libraries" on)
option(revkit_BUILD_STATIC "build static libraries" on)
option(revkit_LINK_PROGRAMS_TO_STATIC "links programs to static libraries" off)
set(revkit_PACKAGES "" CACHE STRING "if non-empty, then only the packages in the semicolon-separated lists are build")
# Libraries (include)
include_directories(src)
# Addons
add_subdirectory(addons)
foreach (dir ${addon_directories})
string(REGEX REPLACE "revkit-" "" def ${dir})
string(REGEX REPLACE "-" "_" def ${def})
string(TOUPPER ${def} def)
add_definitions(-D${def})
include_directories(addons/${dir}/src)
endforeach()
foreach (dir ${addon_include_directories})
include_directories(${dir})
endforeach()
foreach (dir ${addon_link_directories})
link_directories(${dir})
endforeach()
# Libraries
add_subdirectory(src)
# Programs
if(revkit_ENABLE_PROGRAMS)
add_subdirectory(programs)
endif()
# Tests
if(revkit_ENABLE_TESTS)
enable_testing()
add_subdirectory(test)
endif()