forked from TrenchBroom/TrenchBroom
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
73 lines (60 loc) · 2.2 KB
/
CMakeLists.txt
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
# Using target_link_library to link an object library to qt requires 3.12
# 3.12.4 is the maximum version supported on travis / linux out of the box
cmake_minimum_required(VERSION 3.12)
# Configure CCache if available
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
message(STATUS "Using CCache")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif(CCACHE_FOUND)
# Fix warning with Ninja and cotire (see https://github.com/sakra/cotire/issues/81)
if(POLICY CMP0058)
cmake_policy(SET CMP0058 NEW)
endif()
# Using C and CXX because GLEW is C
project(TrenchBroom C CXX)
# Compiler detection
set(COMPILER_IS_CLANG FALSE)
set(COMPILER_IS_GNU FALSE)
set(COMPILER_IS_MSVC FALSE)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(COMPILER_IS_CLANG TRUE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(COMPILER_IS_GNU TRUE)
elseif(MSVC EQUAL 1)
set(COMPILER_IS_MSVC TRUE)
else()
message(FATAL_ERROR "Unsupported compiler detected.")
endif()
include(cmake/Utils.cmake)
# Find Git
find_package(Git)
if(NOT GIT_FOUND)
message(FATAL_ERROR "Could not find git")
endif()
# Find Pandoc
if (NOT PANDOC_PATH AND NOT PANDOC_PATH-NOTFOUND)
find_program(PANDOC_PATH NAMES "pandoc" DOC "Pandoc program location")
if(PANDOC_PATH-NOTFOUND)
message(FATAL_ERROR "Could not find pandoc")
else()
message(STATUS "Found Pandoc: ${PANDOC_PATH}")
endif()
endif()
# Find Qt and OpenGL
find_package(OpenGL REQUIRED)
find_package(Qt5Widgets REQUIRED)
# Find threads lib, needed to work around a gtest bug, see: https://stackoverflow.com/questions/21116622/undefined-reference-to-pthread-key-create-linker-error
# The googletest target links to this
find_package(Threads)
# Populate version variables using git
get_git_describe("${GIT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}" GIT_DESCRIBE)
get_app_version(GIT_DESCRIBE APP_VERSION_YEAR APP_VERSION_NUMBER)
set(APP_BUILD_TYPE "${CMAKE_BUILD_TYPE}")
# Some global variables used in several targets
set(APP_DIR "${CMAKE_SOURCE_DIR}/app")
set(APP_RESOURCE_DIR "${APP_DIR}/resources")
add_subdirectory(lib)
add_subdirectory(common)
add_subdirectory(app)