-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
executable file
·151 lines (116 loc) · 4.55 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# ==================================================================
# invariant-lib - cmake configuration file
# ==================================================================
cmake_minimum_required(VERSION 3.5.1)
# Settings
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O3")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(PACKAGE_NAME ipegenerator)
set(CMAKE_CXX_FLAGS " -fPIC ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
set(CMAKE_BUILD_TYPE "DEBUG")
set(PROJECT_VERSION 1.0.0)
set(Upstream_VERSION 1.0.0)
set(PROJECT_DESCRIPTION "Lib to generate ipe file using ibex-lib")
project(${PACKAGE_NAME})
if(NOT IBEX_ROOT)
set(IBEX_ROOT "$ENV{HOME}/ibex")
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/)
### Find package ###
FIND_PACKAGE(PkgConfig)
find_package(Boost REQUIRED COMPONENTS system thread filesystem)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
message(STATUS "[BOOST] OK")
else()
message(FATAL_ERROR "[BOOST] NO")
endif()
find_package(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
message(STATUS "[OPENMP] OK")
else()
message(FATAL_ERROR "[OPENMP] NO")
endif()
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${IBEX_ROOT})
message(STATUS ${CMAKE_PREFIX_PATH})
find_package (IBEX REQUIRED)
message (STATUS "Found Ibex version ${IBEX_VERSION}")
ibex_init_common() # Ibex should have installed this function
FIND_PACKAGE(Ipe REQUIRED)
if(IPE_FOUND)
message(STATUS "[IPE] IPE_LIBRARIES = ${IPE_LIBRARY}")
else()
message(FATAL_ERROR "Unable to find IPE-lib.")
endif()
include_directories(include)
include_directories(include/ipe)
############## Generate Library
add_library(ipegenerator SHARED
src/figure.cpp
src/model.cpp
)
target_link_libraries(ipegenerator
${IPE_LIBRARY}
Ibex::ibex
)
set_target_properties(${PACKAGE_NAME} PROPERTIES VERSION 1.0)
set_target_properties(${PACKAGE_NAME} PROPERTIES PUBLIC_HEADER src/figure.h)
include(GNUInstallDirs)
install(TARGETS ${PACKAGE_NAME}
EXPORT ipegeneratorTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}
)
INSTALL(
DIRECTORY ${CMAKE_SOURCE_DIR}/include/ipe/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}
FILES_MATCHING PATTERN "*.h*"
)
install(FILES style/basic.ipe DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/${PACKAGE_NAME} COMPONENT config)
configure_file(install/${PACKAGE_NAME}.pc.in ${PACKAGE_NAME}.pc @ONLY)
install(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
### Generate .cmake
set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
set(DEF_INSTALL_CMAKE_DIR "lib/cmake/${PACKAGE_NAME}")
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
foreach(p LIB BIN INCLUDE CMAKE)
set(var INSTALL_${p}_DIR)
if(NOT IS_ABSOLUTE "${${var}}")
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
endif()
endforeach()
export(TARGETS ipegenerator FILE "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}Targets.cmake")
export(PACKAGE ${PACKAGE_NAME})
file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
set(CONF_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}")
configure_file(cmake/ipegeneratorConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PACKAGE_NAME}Config.cmake" @ONLY)
set(CONF_LIBRARIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/lib${PACKAGE_NAME}.so")
configure_file(cmake/ipegeneratorConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PACKAGE_NAME}Config.cmake" @ONLY)
# ... for both
configure_file(cmake/ipegeneratorConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}ConfigVersion.cmake" @ONLY)
# Install the FooBarConfig.cmake and FooBarConfigVersion.cmake
install(FILES
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PACKAGE_NAME}Config.cmake"
"${PROJECT_BINARY_DIR}/${PACKAGE_NAME}ConfigVersion.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
## Install the export set for use with the install-tree
install(EXPORT ipegeneratorTargets DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
#######################
set(SRC
src/main.cpp
src/figure.cpp
src/model.cpp
)
set(HEADERS
src/figure.h
)
add_executable(ipe_test ${SRC})
target_link_libraries(ipe_test
${IPE_LIBRARY}
Ibex::ibex
)