]> Creatis software - FrontAlgorithms.git/blob - CMakeLists.txt
Plugins updated
[FrontAlgorithms.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
3 ## ============
4 ## = Policies =
5 ## ============
6
7 SET(
8   policies
9   CMP0015
10   CMP0020
11   CMP0042
12   )
13 FOREACH(policy ${policies})
14   IF(POLICY ${policy})
15     CMAKE_POLICY(SET ${policy} NEW)
16   ENDIF(POLICY ${policy})
17 ENDFOREACH(policy)
18
19 ## ================
20 ## = Project name =
21 ## ================
22
23 PROJECT(FrontAlgorithms)
24 SET(prj_MAJOR_VERSION   "0")
25 SET(prj_MINOR_VERSION   "0")
26 SET(prj_RELEASE_VERSION "1")
27 SET(
28   prj_VERSION
29   "${prj_MAJOR_VERSION}.${prj_MINOR_VERSION}.${prj_RELEASE_VERSION}"
30   )
31
32 ## ===========
33 ## = Options =
34 ## ===========
35
36 OPTION(BUILD_EXAMPLES "Build examples" OFF)
37 OPTION(BUILD_SHARED_LIBS "Build shared libs" OFF)
38 OPTION(BUILD_PLUGINS "Build plugins" OFF)
39
40 IF(BUILD_SHARED_LIBS)
41   SET(LIB_TYPE SHARED)
42 ELSE(BUILD_SHARED_LIBS)
43   SET(LIB_TYPE STATIC)
44 ENDIF(BUILD_SHARED_LIBS)
45
46 ## ============
47 ## = Packages =
48 ## ============
49
50 # NOTE: It seems that by default on Visual Studio Compiler supports c++11,
51 # so it only need to be test on other O.S.
52 IF(NOT MSVC)
53   INCLUDE(CheckCXXCompilerFlag)
54   CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
55   CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
56   IF(COMPILER_SUPPORTS_CXX11)
57     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
58   ELSEIF(COMPILER_SUPPORTS_CXX0X)
59     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
60   ELSE()
61     MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
62   ENDIF()
63 ENDIF(NOT MSVC)
64
65 # Prepare header to build shared libs (windows)
66 INCLUDE(GenerateExportHeader)
67
68 # Find cpPlugins
69 FIND_PACKAGE(cpPlugins REQUIRED)
70
71 ## ================================================
72 ## = Do not allow to build inside the source tree =
73 ## ================================================
74
75 IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
76   MESSAGE(FATAL_ERROR "Building in the source tree is not allowed")
77 ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
78
79 ## =====================================
80 ## = Where to put executables and libs =
81 ## =====================================
82
83 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
84 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
85 MARK_AS_ADVANCED(
86   CMAKE_BACKWARDS_COMPATIBILITY
87   EXECUTABLE_OUTPUT_PATH
88   LIBRARY_OUTPUT_PATH
89   )
90
91 ## ==============================
92 ## = Subdirs containing headers =
93 ## ==============================
94
95 INCLUDE_DIRECTORIES(
96   ${PROJECT_SOURCE_DIR}/lib
97   ${PROJECT_BINARY_DIR}/lib
98   )
99
100 ## ===========================
101 ## = Subdirs containing code =
102 ## ===========================
103
104 SUBDIRS(
105   cmake
106   lib
107   appli
108   )
109
110 ## eof - $RCSfile$