-
Notifications
You must be signed in to change notification settings - Fork 178
/
CMakeLists.txt
122 lines (113 loc) · 5.08 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
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
112
113
114
115
116
117
118
119
120
121
122
cmake_minimum_required(VERSION 2.6)
project(awesomebump)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
# This is the default install directory prefix for external resources
# from the source's Bin/ directory
# Only used when doing "Release" builds
set(RESOURCE_DEFAULT lib64/awesomebump)
# Setting the now REQUIRED base directory for resource files in Bin/
# if a custom path was not provided by the user at compile time
# This path is referenced in code when loading these resources
if(NOT RESOURCE_BASE)
if(CMAKE_BUILD_TYPE MATCHES "Release")
# Default path for "Release" builds
# AB must be installed via 'make install' for the program to work
set(RESOURCE_BASE ${CMAKE_INSTALL_PREFIX}/${RESOURCE_DEFAULT})
else()
# "Debug" and other builds will install resources to the same
# dir as the executable if no path is provided at compile time
# Install is optional; you can just copy Bin/* to the binary's dir
# or move the binary to Bin/
# Installing via 'make install' will copy the resource files to
# the binary's directory for you to make things easier though.
set(RESOURCE_BASE ".")
install(DIRECTORY Bin/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif()
endif()
# Making sure the required dependencies are present on the build system
# This list probably needs to be expanded
find_package(Qt5Core REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5DBus REQUIRED)
find_package(OpenGL REQUIRED)
# Including support for OpenGL 3.3.0
# Use the option -Drelease_gl330=1 to trigger it
if(release_gl330)
add_definitions(-DUSE_OPENGL_330)
endif()
# Including source files and setting flags for the build
add_definitions(${Qt5Widgets_DEFINITIONS} -DRESOURCE_BASE="${RESOURCE_BASE}/")
qt5_wrap_ui(UI_HEADERS Sources/allaboutdialog.ui Sources/dialogheightcalculator.ui Sources/dialoglogger.ui
Sources/dialogshortcuts.ui Sources/formimageprop.ui
Sources/formmaterialindicesmanager.ui Sources/formsettingscontainer.ui Sources/formsettingsfield.ui
Sources/mainwindow.ui Sources/dockwidget3dsettings.ui)
qt5_add_resources(UI_RESOURCES Sources/content.qrc)
set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(AwesomeBump_SRCS
Sources/utils/Mesh.cpp Sources/utils/qglbuffers.cpp
Sources/utils/tinyobj/tiny_obj_loader.cc Sources/CommonObjects.cpp
Sources/allaboutdialog.cpp Sources/camera.cpp Sources/dialogheightcalculator.cpp
Sources/camera.cpp Sources/dialogheightcalculator.cpp Sources/camera.cpp
Sources/dialogheightcalculator.cpp Sources/camera.cpp Sources/gpuinfo.cpp
Sources/dialogheightcalculator.cpp Sources/dialoglogger.cpp Sources/dialogshortcuts.cpp
Sources/dialoglogger.cpp Sources/dialogshortcuts.cpp
Sources/formimagebase.cpp Sources/formimagebase.cpp Sources/formimageprop.cpp
Sources/formmaterialindicesmanager.cpp Sources/formsettingscontainer.cpp
Sources/formsettingsfield.cpp Sources/glimageeditor.cpp Sources/glwidget.cpp
Sources/glwidgetbase.cpp Sources/mainwindow.cpp Sources/main.cpp
Sources/dockwidget3dsettings.cpp)
# Check for QtnProperty (required)
if(EXISTS "${CMAKE_SOURCE_DIR}/Sources/utils/QtnProperty/QtnPropertyUnity.cpp")
set(AwesomeBump_SRCS
Sources/utils/QtnProperty/QtnPropertyUnity.cpp)
# choose QtnPeg binary
if(APPLE)
set(QTNPEG "${CMAKE_SOURCE_DIR}/Sources/utils/QtnProperty/bin-osx/QtnPEG")
elseif(LINUX)
set(QTNPEG "${CMAKE_SOURCE_DIR}/Sources/utils/QtnProperty/bin-linux/QtnPEG")
elseif(WIN32)
set(QTNPEG "${CMAKE_SOURCE_DIR}/Sources/utils/QtnProperty/bin-win/QtnPEG")
else()
message(FATAL_ERROR "Cannot find QtnPEG binary for this platform.")
endif()
if(NOT EXISTS "${QTNPEG}")
message(FATAL_ERROR "Binary of QtnPEG not found.")
endif()
# process pef file
function(add_pef output file)
# Only process *.pef files
get_filename_component(ext ${file} EXT)
if(NOT ext STREQUAL ".pef")
message(STATUS "$file - not a pef extension")
endif()
set(header_extension "cpp")
get_filename_component(base ${file} NAME_WE)
set(base_abs ${CMAKE_CURRENT_BINARY_DIR}/${base})
set(outfiles ${base_abs}.cpp ${base_abs}.${header_extension})
set(${output} ${${output}} ${outfiles} PARENT_SCOPE)
add_custom_command(
OUTPUT ${outfiles}
COMMAND "${QTNPEG}" "${CMAKE_CURRENT_SOURCE_DIR}/${file}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${file}"
COMMENT "QtnPEG preprocessing of ${file}"
VERBATIM
)
set_source_files_properties(${outfiles} PROPERTIES GENERATED TRUE)
endfunction()
else()
message(FATAL_ERROR "Could not find QtnProperty submodule.")
endif()
# Configure the linker and finalize binary compilation
add_executable(awesomebump ${AwesomeBump_SRCS} ${UI_HEADERS} ${UI_RESOURCES} Sources/resources/icons/icon.icns)
target_link_libraries(awesomebump Qt5::Core Qt5::DBus Qt5::Gui Qt5::Widgets Qt5::OpenGL
GL)
# Create an install target for "Release" builds using custom or default binary and
# resource file paths
if(${CMAKE_BUILD_TYPE} MATCHES "Release")
install(TARGETS awesomebump RUNTIME DESTINATION bin)
install(DIRECTORY Bin/ DESTINATION ${RESOURCE_BASE})
endif()