-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
111 lines (88 loc) · 3.02 KB
/
CMakeLists.txt
File metadata and controls
111 lines (88 loc) · 3.02 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
cmake_minimum_required(VERSION 3.16)
project(relight VERSION 1.0.0 LANGUAGES CXX)
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Embed absolute source dir for locating runtime assets (e.g., ICC profiles)
add_compile_definitions(RELIGHT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
# Enable position independent code for shared libraries
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Find framework last on macOS
set(CMAKE_FIND_FRAMEWORK LAST)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
message(STATUS "CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}")
# Build options
option(MACOSX_MAKE_BUNDLE "If using macOS, all targets will be placed in a relight macOS app bundle" ON)
# Qt6 detection
find_package(Qt6 COMPONENTS Core Gui Widgets Concurrent Xml REQUIRED)
set(RELIGHT_QT Qt6)
message(STATUS "Using Qt6")
# Find dependencies
find_package(Eigen3 QUIET)
find_package(OpenMP QUIET)
# Bundle configuration for macOS
if(MACOSX_MAKE_BUNDLE)
set(MACOSX_EXE_TARGET_OPTION MACOSX_BUNDLE)
else()
set(MACOSX_EXE_TARGET_OPTION "")
endif()
# Eigen3 setup
if(NOT Eigen3_FOUND)
message(STATUS "Using bundled Eigen3")
set(EIGEN3_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/eigen-3.3.9)
else()
message(STATUS "Using system Eigen3")
endif()
# JPEG setup
if(MSVC)
set(JPEGTURBO_HOME ${CMAKE_CURRENT_SOURCE_DIR}/external/libjpeg-turbo-2.0.6)
set(JPEG_INCLUDE_DIR ${JPEGTURBO_HOME}/include)
set(JPEG_LIBRARIES ${JPEGTURBO_HOME}/lib/jpeg.lib)
message(STATUS "Using bundled libjpeg-turbo for MSVC")
else()
find_package(JPEG REQUIRED)
message(STATUS "Using system JPEG")
endif()
# TIFF setup
find_package(TIFF QUIET)
if(NOT TIFF_FOUND)
message(STATUS "Using bundled TIFF library")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/tiff-4.7.0)
add_library(TIFF::TIFF ALIAS tiff)
else()
message(STATUS "Using system TIFF library")
endif()
# OpenCV setup, not needed for the moment,.
#if(NOT APPLE)
# find_package(OpenCV REQUIRED)
# message(STATUS "OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}")
#endif()
# LittleCMS2 setup (mandatory)
find_package(LCMS2 REQUIRED)
message(STATUS "Using LittleCMS2 include dirs: ${LCMS2_INCLUDE_DIRS}")
# Version information
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/RELIGHT_VERSION")
# Version is read from RELIGHT_VERSION file
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/RELIGHT_VERSION" RELIGHT_VERSION)
string(STRIP "${RELIGHT_VERSION}" RELIGHT_VERSION)
else()
# Fallback version
set(RELIGHT_VERSION "dev")
endif()
message(STATUS "Relight Version: ${RELIGHT_VERSION}")
# Include custom CMake tools
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/relight_tools.cmake)
# Installation options
if(WIN32 OR APPLE)
set(INSTALL_TO_UNIX_LAYOUT OFF)
else()
set(INSTALL_TO_UNIX_LAYOUT ON)
endif()
include(GNUInstallDirs)
# Add subdirectories
add_subdirectory(relightlab)
add_subdirectory(relight-cli)
add_subdirectory(relight-deepzoom)
add_subdirectory(relight-merge)
add_subdirectory(relight-normals)