Newer
Older
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
# Check CMAKE version
cmake_minimum_required( VERSION 3.0 )
# Invite message
message( STATUS "----------------------------------------------------" )
message( STATUS "- PROJECT GENERATION : Concurrent Programming Tool -" )
message( STATUS "----------------------------------------------------" )
message( STATUS "" )
##################################################################################
# Project
##################################################################################
# Project name
project( CpViewer )
set( CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/Install" )
# Remove some compilation warnings
add_definitions( -D_CRT_SECURE_NO_WARNINGS )
# GLFW
add_definitions( -DGLFW_DLL )
##################################################################################
# Package Management
##################################################################################
# OpenGL
find_package( OpenGL REQUIRED )
# OpenMP
find_package( OpenMP )
##################################################################################
# Include directories
##################################################################################
# glad
set( glad_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glad/lib/cmake/glad" )
find_package( glad CONFIG REQUIRED )
# glm
set( glm_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glm/lib/cmake/glm" )
find_package( glm CONFIG REQUIRED )
include_directories( ${GLM_INCLUDE_DIRS} )
# stb
include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/stb" )
# glfw
set( glfw3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/glfw/lib/cmake/glfw3 )
find_package( glfw3 CONFIG REQUIRED )
# imgui
set( ImGui_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/imgui" )
include_directories( "${ImGui_DIR}/include" )
##################################################################################
# Program
##################################################################################
# Retrieve source files
file( GLOB incList "${CMAKE_CURRENT_SOURCE_DIR}/*.h" )
file( GLOB srcList "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" )
# Target program
add_executable( ${PROJECT_NAME} ${srcList} ${incList} )
#####################################################
set( CUSTOM_DEBUG_POSTFIX "d" )
set_target_properties( ${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX ${CUSTOM_DEBUG_POSTFIX} )
#####################################################
##################################################################################
# Linked libraries
##################################################################################
# Graphics
target_link_libraries( ${PROJECT_NAME} ${OPENGL_gl_LIBRARY} )
# GLFW
target_link_libraries( ${PROJECT_NAME} glfw )
# glad
target_link_libraries( ${PROJECT_NAME} glad::glad )
# dlopen/dlclose
target_link_libraries( ${PROJECT_NAME} ${CMAKE_DL_LIBS} )
# ImGui
target_link_libraries( ${PROJECT_NAME} debug "${ImGui_DIR}/lib/ImGuid.lib" )
target_link_libraries( ${PROJECT_NAME} optimized "${ImGui_DIR}/lib/ImGui.lib" )
# OpenMP
if( OpenMP_CXX_FOUND )
target_link_libraries( ${PROJECT_NAME} OpenMP::OpenMP_CXX )
endif()
# Project property
set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11 )
##################################################################################
# Custom commands
##################################################################################
# Libraries
install( TARGETS ${PROJECT_NAME} DESTINATION bin )