-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
96 lines (75 loc) · 1.89 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
cmake_minimum_required(VERSION 3.22)
project(ProtoInfo)
# basic cmake settings
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${PROJECT_SOURCE_DIR}/cmake")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# compiler settings
if(WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W4")
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif(WIN32)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Include Conan build files
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
set(CMAKE_PREFIX_PATH "${CMAKE_BINARY_DIR}")
set(CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}")
# global include settings
include_directories(${PROJECT_SOURCE_DIR}/src)
include_directories(${CONAN_INCLUDE_DIRS_MS-GSL})
# Git version information
include(git-version.cmake)
#
# DEPENDENCIES
#
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt6 COMPONENTS Core Widgets REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC OFF)
#
# SOURCES
#
file(GLOB_RECURSE headers src/*.h)
file(GLOB_RECURSE sources src/*.cpp)
file(GLOB_RECURSE qtforms res/forms/*.ui)
set(qtres res/app.qrc)
source_group(
TREE ${CMAKE_CURRENT_SOURCE_DIR}
PREFIX src
FILES ${headers} ${sources}
)
QT6_WRAP_UI(qtforms_generated ${qtforms})
#
# BINARIES
#
set(GUI_TYPE "")
if (WIN32)
set(GUI_TYPE WIN32)
endif()
add_executable(${PROJECT_NAME}
${GUI_TYPE}
${headers}
${sources}
${qtforms}
${qtforms_generated}
${qtres}
)
target_link_libraries(${PROJECT_NAME}
PRIVATE CONAN_PKG::humblelogging
PRIVATE CONAN_PKG::protobuf
PUBLIC Qt6::Widgets
)
if(WIN32)
target_link_libraries(${PROJECT_NAME}
PRIVATE Ws2_32.lib
)
endif(WIN32)
if(UNIX)
target_link_libraries(${PROJECT_NAME}
PRIVATE pthread
)
endif(UNIX)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/res/qt.conf" $<TARGET_FILE_DIR:${PROJECT_NAME}>)