forked from neurodial/OCT-Marker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
131 lines (86 loc) · 4.56 KB
/
Copy pathCMakeLists.txt
File metadata and controls
131 lines (86 loc) · 4.56 KB
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
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(octmarker)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_module/)
set( CMAKE_CXX_STANDARD 11 )
find_package(Boost 1.40 COMPONENTS filesystem serialization system iostreams REQUIRED)
find_package(OpenCV REQUIRED)
find_package(LibOctData 1 CONFIG REQUIRED)
find_package(OctCppFramework REQUIRED)
option(BUILD_WITH_SEGMENTATION_ML "build with support for NN" OFF)
option(BUILD_MATLAB_MEX_FUNCTIONS "build matlab mex functions" OFF)
option(BUILD_OCTAVE_MEX_FUNCTIONS "build octave mex functions" OFF)
option(BUILD_QT_PROGRAMM "build main programm" ON )
option(BUILD_MEX_WITH_STATIC_CPP_LIB "build mex with static c++ lib" OFF)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
if(BUILD_QT_PROGRAMM)
find_package(Qt5Core)
find_package(Qt5Widgets)
find_package(Qt5LinguistTools)
find_package(Qt5Svg)
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
git_author_date(GIT_DATE)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/buildconstants.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/buildconstants.cpp" @ONLY)
list(APPEND octmarker_SRCS "${CMAKE_CURRENT_BINARY_DIR}/buildconstants.cpp")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include_directories(SYSTEM ${QT_INCLUDES} ${CMAKE_BINARY_DIR})
include_directories(SYSTEM ${Boost_INCLUDE_DIR})
include_directories(${CMAKE_SOURCE_DIR}/src/)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS})
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wunreachable-code -Wconversion -Werror=return-type") # ") ## Optimize -O3 -Weverything -Weffc++
if(WIN32)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -mwindows")
endif()
endif()
if(BUILD_WITH_SEGMENTATION_ML)
find_package(FANN REQUIRED)
add_definitions(-DML_SUPPORT)
include_directories(SYSTEM ${FANN_INCLUDE_DIR})
endif()
set(srcs_directories data_structure algos widgets windows manager markermodules model markerobjects helper imagefilter qt)
foreach(loop_var ${srcs_directories})
file(GLOB_RECURSE sources_base "${CMAKE_CURRENT_SOURCE_DIR}/src/${loop_var}/*.cpp")
list(APPEND octmarker_SRCS ${sources} ${sources_base})
endforeach(loop_var)
file(GLOB ui_forms ${CMAKE_CURRENT_SOURCE_DIR}/ui/*.ui)
list(APPEND octmarker_SRCS ${ui_forms})
file(GLOB LANG ${CMAKE_CURRENT_SOURCE_DIR}/language_files/*.ts)
set(octmarker_RESOURCES application.qrc)
QT5_ADD_RESOURCES(octmarker_RESOURCES_RCC ${octmarker_RESOURCES})
QT5_ADD_TRANSLATION(TRANSLATIONS ${LANG})
add_executable(octmarker src/main.cpp src/prepareprogrammoptions.cpp ${octmarker_SRCS}
${TRANSLATIONS}
${octmarker_RESOURCES_RCC} octmarker.rc)
if(WIN32 AND MSVC)
# suppress dos window
set_target_properties(octmarker PROPERTIES LINK_FLAGS_RELEASE "/subsystem:windows /ENTRY:mainCRTStartup")
endif()
target_link_libraries(octmarker Qt5::Core Qt5::Widgets ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} ${OpenCV_LIBS})
target_link_libraries(octmarker LibOctData::octdata)
target_link_libraries(octmarker OctCppFramework::oct_cpp_framework)
target_link_libraries(octmarker ${FANN_LIBRARY})
install(TARGETS octmarker RUNTIME DESTINATION bin)
endif()
if(BUILD_MATLAB_MEX_FUNCTIONS)
find_package(Matlab COMPONENTS MX_LIBRARY REQUIRED)
matlab_add_mex(NAME read_seg SRC src_matlab/read_seg.cpp src/manager/octmarkerio.cpp src/data_structure/simplematcompress.cpp LINK_TO ${Boost_LIBRARIES})
set_target_properties(read_seg PROPERTIES COMPILE_DEFINITIONS "MEX_COMPILE")
if(BUILD_MEX_WITH_STATIC_CPP_LIB)
set_target_properties(read_seg PROPERTIES LINK_FLAGS "-static-libstdc++")
endif()
target_include_directories(read_seg SYSTEM PRIVATE ${Matlab_INCLUDE_DIRS} PUBLIC ${CMAKE_SOURCE_DIR}/src/)
target_link_libraries(read_seg OctCppFramework::oct_cpp_framework)
endif()
if(BUILD_OCTAVE_MEX_FUNCTIONS)
find_package(Octave COMPONENTS MX_LIBRARY REQUIRED)
octave_add_oct(oct_read_seg SOURCES src_matlab/read_seg.cpp src/manager/octmarkerio.cpp src/data_structure/simplematcompress.cpp LINK_LIBRARIES ${Boost_LIBRARIES} EXTENSION mex)
set_target_properties(oct_read_seg PROPERTIES COMPILE_DEFINITIONS "MEX_COMPILE")
# if(BUILD_MEX_WITH_STATIC_CPP_LIB)
# set_target_properties(oct_read_seg PROPERTIES LINK_FLAGS "-static-libstdc++")
# endif()
target_include_directories(oct_read_seg SYSTEM PRIVATE ${OCTAVE_INCLUDE_DIRS} PUBLIC ${CMAKE_SOURCE_DIR}/src/)
target_link_libraries(oct_read_seg OctCppFramework::oct_cpp_framework)
endif()