-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
97 lines (76 loc) · 2.25 KB
/
CMakeLists.txt
File metadata and controls
97 lines (76 loc) · 2.25 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
# 3.23 Required for proxTV FILE_SETS
cmake_minimum_required(VERSION 3.23.0)
project(TotalVariation)
set(TotalVariation_LIBRARIES proxTV::proxTV)
include(itk-module-init.cmake)
if(NOT ITK_SOURCE_DIR)
find_package(ITK REQUIRED)
list(APPEND CMAKE_MODULE_PATH ${ITK_CMAKE_DIR})
endif()
include(FetchContent)
message(STATUS "TotalVariation_proxTV_USE_EIGEN: ${TotalVariation_proxTV_USE_EIGEN}")
# if proxTV is built elsewhere
if(ITK_USE_SYSTEM_proxTV)
find_package(proxTV REQUIRED CONFIG)
# It is needed to EXPORT_CODE_BUILD when using external proxTV
set(${PROJECT_NAME}_EXPORT_CODE_BUILD
"${${PROJECT_NAME}_EXPORT_CODE_BUILD}
if(NOT ITK_BINARY_DIR)
find_package(proxTV REQUIRED CONFIG)
endif()
")
# When this module is loaded by an app, it is needed to find proxTV and OpenMP
set(${PROJECT_NAME}_EXPORT_CODE_INSTALL
"${${PROJECT_NAME}_EXPORT_CODE_INSTALL}
find_package(proxTV REQUIRED CONFIG)
")
else() # build proxTV here with the selected Eigen3
# Build proxTV with C++14
if(NOT CMAKE_CXX_STANDARD)
# set(CMAKE_CXX_STANDARD 14)
endif()
if(NOT CMAKE_CXX_STANDARD_REQUIRED)
# set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
if(NOT CMAKE_CXX_EXTENSIONS)
# set(CMAKE_CXX_EXTENSIONS OFF)
endif()
set(proxTV_Eigen_LIBRARIES ITK::ITKEigen3Module)
set(proxTV_GIT_REPOSITORY "https://github.com/phcerdan/proxTV.git")
set(proxTV_GIT_TAG "itk_installation")
FetchContent_Declare(
proxtv_fetch
GIT_REPOSITORY ${proxTV_GIT_REPOSITORY}
GIT_TAG ${proxTV_GIT_TAG}
)
# proxTV options:
if(TotalVariation_proxTV_USE_EIGEN)
set(proxTV_USE_LAPACK 0)
else()
set(proxTV_USE_LAPACK 1)
endif()
# end proxTV options
FetchContent_MakeAvailable(proxTV_fetch)
if (proxTV_USE_LAPACK)
set(${PROJECT_NAME}_EXPORT_CODE_BUILD
"${${PROJECT_NAME}_EXPORT_CODE_BUILD}
if(NOT ITK_BINARY_DIR)
find_package(LAPACKE REQUIRED)
find_package(LAPACK REQUIRED)
endif()
")
set(${PROJECT_NAME}_EXPORT_CODE_INSTALL
"${${PROJECT_NAME}_EXPORT_CODE_INSTALL}
find_package(LAPACKE REQUIRED)
find_package(LAPACK REQUIRED)
")
endif()
endif()
# Populate module variables
if(NOT ITK_SOURCE_DIR)
include(ITKModuleExternal)
else()
set(ITK_DIR ${CMAKE_BINARY_DIR})
itk_module_impl()
endif()
itk_module_target(proxTV NAMESPACE proxTV::)