-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
60 lines (51 loc) · 2.05 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
cmake_minimum_required(VERSION 3.0)
project(modelviewer)
if (POLICY CMP0069)
cmake_policy(SET CMP0069 NEW)
endif()
get_filename_component(PROJECT_DIR "." ABSOLUTE)
set(SOURCE_DIR "${PROJECT_DIR}/src")
set(UI_DIR "${PROJECT_DIR}/ui")
set(EXTERNAL_DIR "${PROJECT_DIR}/external")
set(LPREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
set(LSUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
set(CMAKE_CXX_STANDARD 17)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
set(STATIC_BUILD 1)
if (MINGW)
list(APPEND LIBS -static) #Statically link MinGW dependencies (winpthread-1, gcc_s_seh-1)
endif ()
list(APPEND LIBS -static-libstdc++)
#LTO does not seem to work with MinGW (because of libstdc++fs ?)
#set(CMAKE_INTERPROCEDURAL_OPTIMIZATION 1)
set(rc_src ${UI_DIR}/main.rc)
endif ()
include(cmake/qt_functions.cmake)
include(cmake/text2cpp.cmake)
include(cmake/dependencies.cmake)
include(cmake/licenses.cmake)
if (MSVC)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif ()
file(GLOB_RECURSE ui_files RELATIVE "${UI_DIR}" "${UI_DIR}/*.ui")
file(GLOB_RECURSE moc_files RELATIVE "${SOURCE_DIR}" "${SOURCE_DIR}/*.hpp")
file(GLOB_RECURSE hpp_SOURCES "${SOURCE_DIR}/*.hpp")
file(GLOB_RECURSE cpp_SOURCES "${SOURCE_DIR}/*.cpp")
file(GLOB glsl_SOURCES "${SOURCE_DIR}/glsl/*.glsl")
set(include_dirs_INTERNAL
${SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/include
)
get_filename_component(LIB_ROOT ${QT_UIC_PATH} DIRECTORY)
qt_add_moc_files(moc_output ${moc_files})
qt_add_uic_files(uic_output ${ui_files})
addPlaintext(opengl_shader ${CMAKE_CURRENT_BINARY_DIR}/include/plaintext ${glsl_SOURCES})
add_executable(${PROJECT_NAME} WIN32 ${cpp_SOURCES} ${hpp_SOURCES} ${moc_output} ${uic_output} ${opengl_shader} ${rc_src} ${rcc_src} ${license_sources})
add_dependencies(${PROJECT_NAME} assimp)
include_directories(${include_dirs_INTERNAL})
list(APPEND LIBS Qt5::Core Qt5::Gui Qt5::Widgets Qt5::OpenGL)
list(APPEND LIBS glew)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # gcc and MinGW
list(APPEND LIBS stdc++fs)
endif()
target_link_libraries(${PROJECT_NAME} ${LIBS})