CMakeLists.txt 6.67 KB
Newer Older
WINTZ Julien's avatar
WINTZ Julien committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
## Version: $Id$
##
######################################################################
##
### Commentary:
##
######################################################################
##
### Change Log:
##
######################################################################
##
### Code:

15
cmake_minimum_required(VERSION 3.6.0)
WINTZ Julien's avatar
WINTZ Julien committed
16 17 18 19 20 21 22 23 24

######################################################################

project(dtkVisualization)

## ###################################################################
## Version setup
## ###################################################################

NICLAUSSE Nicolas's avatar
NICLAUSSE Nicolas committed
25
set(${PROJECT_NAME}_VERSION_MAJOR 2)
CABEL Tristan's avatar
2.9.0  
CABEL Tristan committed
26
set(${PROJECT_NAME}_VERSION_MINOR 9)
NICLAUSSE Nicolas's avatar
NICLAUSSE Nicolas committed
27
set(${PROJECT_NAME}_VERSION_PATCH 2)
WINTZ Julien's avatar
WINTZ Julien committed
28 29 30 31 32 33 34 35 36 37 38 39 40
set(${PROJECT_NAME}_VERSION
  ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH})

## ###################################################################
## Output directory setup
## ###################################################################

include(GNUInstallDirs)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)

41 42 43
set(CMAKE_INSTALL_RPATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON)

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
44 45 46 47 48 49 50 51 52 53
## ###################################################################
## Default build type (RelWithDebInfo)
## ###################################################################

if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.")
  set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)

WINTZ Julien's avatar
WINTZ Julien committed
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
## #################################################################
## Install prefix
## #################################################################

if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install" CACHE PATH "${PROJECT_NAME} install prefix" FORCE)
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

## #################################################################
## Generate compilation database
## #################################################################

set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")

## #################################################################
## Build setup
## #################################################################

72
set(CMAKE_CXX_STANDARD 14)
WINTZ Julien's avatar
WINTZ Julien committed
73 74 75 76 77 78 79 80 81 82 83 84
set(CMAKE_CXX_STANDARD_REQUIRED ON)

## ###################################################################
## Dependencies - cmake
## ###################################################################

include(GenerateExportHeader)

## #################################################################
## Dependencies - external
## #################################################################

85
find_package(VTK REQUIRED)
KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
86
include(${VTK_USE_FILE})
WINTZ Julien's avatar
WINTZ Julien committed
87

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
88
find_package(Qt5 COMPONENTS Core Widgets Gui Xml Multimedia MultimediaWidgets REQUIRED)
KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
89 90
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
WINTZ Julien's avatar
WINTZ Julien committed
91

92 93 94
add_library(QtMultimedia_Private INTERFACE)
target_include_directories(QtMultimedia_Private INTERFACE ${Qt5Multimedia_PRIVATE_INCLUDE_DIRS})

95 96 97 98 99
find_package(dtkCore    REQUIRED)
find_package(dtkFonts   REQUIRED)
find_package(dtkWidgets RREQUIRED)
find_package(dtkThemes  REQUIRED)
find_package(dtkLog     REQUIRED)
WINTZ Julien's avatar
WINTZ Julien committed
100

NICLAUSSE Nicolas's avatar
NICLAUSSE Nicolas committed
101 102 103 104 105
if(WIN32)
  set(OpenGL_GL_PREFERENCE "GLVND")
  find_package(OpenGL REQUIRED)
endif(WIN32)

WINTZ Julien's avatar
WINTZ Julien committed
106 107 108 109 110
## ###################################################################
## Input
## ###################################################################

add_subdirectory(src)
KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
111 112
add_subdirectory(app)
add_subdirectory(exp)
WINTZ Julien's avatar
WINTZ Julien committed
113 114

## ###################################################################
KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
115
## Export configuration
WINTZ Julien's avatar
WINTZ Julien committed
116 117
## ###################################################################

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
118 119 120 121 122 123 124 125 126 127
include(CMakePackageConfigHelpers)

set(${PROJECT_NAME}_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" CACHE
  STRING "install path for ${PROJECT_NAME}Config.cmake")

set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src)
configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in
  "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
  INSTALL_DESTINATION "${${PROJECT_NAME}_CMAKE_INSTALL_DIR}"
  PATH_VARS ${PROJECT_NAME}_INCLUDE_DIRS)
WINTZ Julien's avatar
WINTZ Julien committed
128

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
129 130 131 132 133
set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in
  ${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake
  INSTALL_DESTINATION "${${PROJECT_NAME}_CMAKE_INSTALL_DIR}"
  PATH_VARS ${PROJECT_NAME}_INCLUDE_DIRS)
WINTZ Julien's avatar
WINTZ Julien committed
134

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
135 136 137 138 139 140 141
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
  VERSION ${${PROJECT_NAME}_VERSION}
  COMPATIBILITY AnyNewerVersion)

## ###################################################################
## Exporting
## ###################################################################
WINTZ Julien's avatar
WINTZ Julien committed
142

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
143 144 145
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake
              ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
  DESTINATION ${${PROJECT_NAME}_CMAKE_INSTALL_DIR})
WINTZ Julien's avatar
WINTZ Julien committed
146

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
147 148 149
install(EXPORT layer-targets
  FILE ${PROJECT_NAME}Targets.cmake
  DESTINATION ${${PROJECT_NAME}_CMAKE_INSTALL_DIR})
WINTZ Julien's avatar
WINTZ Julien committed
150

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
151
export(PACKAGE ${PROJECT_NAME})
WINTZ Julien's avatar
WINTZ Julien committed
152 153 154 155 156 157 158 159 160

## ###################################################################
## Beautifying
## ###################################################################

mark_as_advanced(${PROJECT_NAME}_VERSION_MAJOR)
mark_as_advanced(${PROJECT_NAME}_VERSION_MINOR)
mark_as_advanced(${PROJECT_NAME}_VERSION_BUILD)

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
161 162
mark_as_advanced(${PROJECT_NAME}_CMAKE_INSTALL_DIR)

WINTZ Julien's avatar
WINTZ Julien committed
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
mark_as_advanced(Qt5OpenGL_DIR)
mark_as_advanced(Qt5Concurrent_DIR)
mark_as_advanced(Qt5Core_DIR)
mark_as_advanced(Qt5Declarative_DIR)
mark_as_advanced(Qt5Gui_DIR)
mark_as_advanced(Qt5Network_DIR)
mark_as_advanced(Qt5Qml_DIR)
mark_as_advanced(Qt5Quick_DIR)
mark_as_advanced(Qt5QuickTest_DIR)
mark_as_advanced(Qt5Script_DIR)
mark_as_advanced(Qt5Test_DIR)
mark_as_advanced(Qt5Widgets_DIR)
mark_as_advanced(Qt5Xml_DIR)
mark_as_advanced(Qt5Sql_DIR)

KLOCZKO Thibaud's avatar
KLOCZKO Thibaud committed
178 179 180 181 182 183
mark_as_advanced(dtkCore_DIR)
mark_as_advanced(dtkFonts_DIR)
mark_as_advanced(dtkLog_DIR)
mark_as_advanced(dtkThemes_DIR)
mark_as_advanced(dtkWidgets_DIR)

WINTZ Julien's avatar
WINTZ Julien committed
184 185 186 187 188 189 190 191 192
mark_as_advanced(CMAKE_AR)
mark_as_advanced(CMAKE_BUILD_TYPE)
mark_as_advanced(CMAKE_INSTALL_PREFIX)
mark_as_advanced(CMAKE_OSX_ARCHITECTURES)
mark_as_advanced(CMAKE_OSX_DEPLOYMENT_TARGET)
mark_as_advanced(CMAKE_OSX_SYSROOT)

######################################################################
### CMakeLists.txt ends here