Repository navigation
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
151 lines (137 loc) · 5.17 KB
/
Copy pathCMakeLists.txt
File metadata and controls
151 lines (137 loc) · 5.17 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cmake_minimum_required(VERSION 3.30)
project(RegKit VERSION 1.1.2 LANGUAGES C CXX)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT ProgramDatabase)
include(FetchContent)
FetchContent_Declare(win32ui
GIT_REPOSITORY https://github.com/nohuto/win32-ui.git
GIT_TAG 788b364f05b01be01efc448b998d5a7051709b8f
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable(win32ui)
add_library(regkit_compile_settings INTERFACE)
target_compile_features(regkit_compile_settings INTERFACE cxx_std_20)
target_compile_definitions(regkit_compile_settings INTERFACE
UNICODE
_UNICODE
NOMINMAX
WIN32_LEAN_AND_MEAN
_WIN32_IE=0x0600
REGKIT_VERSION_TEXT=L"${PROJECT_VERSION}"
)
if (MSVC)
target_compile_options(regkit_compile_settings INTERFACE
/W4
/sdl
/guard:cf
/utf-8
)
target_link_options(regkit_compile_settings INTERFACE
/GUARD:CF
/DEBUG
$<$<CONFIG:Release>:/CETCOMPAT>
$<$<CONFIG:Release>:/OPT:REF>
$<$<CONFIG:Release>:/OPT:ICF>
$<$<CONFIG:Release>:/PDBALTPATH:%_PDB%>
)
endif()
include(cmake/RegKitTarget.cmake)
include(cmake/VerifyTargetGraph.cmake)
add_subdirectory(redist/pcre2)
add_subdirectory(src)
add_executable(RegKit WIN32
src/launch/program.cpp
resources/app.rc
)
regkit_configure_executable(RegKit)
target_include_directories(RegKit PRIVATE
"${PROJECT_SOURCE_DIR}/resources"
)
target_link_libraries(RegKit PRIVATE
regkit_frame
regkit_cli
regkit_dialogs
regkit_ui
regkit_win32
comctl32
)
set_target_properties(RegKit PROPERTIES OUTPUT_NAME "regkit")
set_property(TARGET RegKit PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^([Aa][Rr][Mm]64|aarch64)$")
set(REGKIT_OFFREG_ARCH arm64)
elseif (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(REGKIT_OFFREG_ARCH x86)
else()
set(REGKIT_OFFREG_ARCH x64)
endif()
set(REGKIT_OFFREG_DLL "${CMAKE_SOURCE_DIR}/redist/offreg/${REGKIT_OFFREG_ARCH}/offreg.dll")
if (NOT EXISTS "${REGKIT_OFFREG_DLL}")
message(FATAL_ERROR "Missing ${REGKIT_OFFREG_DLL}. Offline Registry requires the Microsoft offreg.dll redistributable for this architecture.")
endif()
file(GLOB REGKIT_LANGUAGE_FILES CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/assets/lang/*.po")
add_custom_command(TARGET RegKit POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${REGKIT_OFFREG_DLL}"
"$<TARGET_FILE_DIR:RegKit>/offreg.dll"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_SOURCE_DIR}/redist/pcre2/LICENCE.md"
"$<TARGET_FILE_DIR:RegKit>/licences/PCRE2-LICENCE.md"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:RegKit>/assets/records"
COMMAND ${CMAKE_COMMAND} -E rm -rf "$<TARGET_FILE_DIR:RegKit>/assets/icons"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:RegKit>/assets/icons"
COMMAND ${CMAKE_COMMAND} -E rm -rf "$<TARGET_FILE_DIR:RegKit>/assets/defaults"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:RegKit>/assets/defaults"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_SOURCE_DIR}/assets/records/23H2.txt"
"$<TARGET_FILE_DIR:RegKit>/assets/records/23H2.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_SOURCE_DIR}/assets/records/24H2.txt"
"$<TARGET_FILE_DIR:RegKit>/assets/records/24H2.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_SOURCE_DIR}/assets/records/25H2.txt"
"$<TARGET_FILE_DIR:RegKit>/assets/records/25H2.txt"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/assets/icons"
"$<TARGET_FILE_DIR:RegKit>/assets/icons"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/assets/defaults"
"$<TARGET_FILE_DIR:RegKit>/assets/defaults"
COMMAND ${CMAKE_COMMAND} -E rm -rf "$<TARGET_FILE_DIR:RegKit>/assets/bitfields"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/assets/bitfields"
"$<TARGET_FILE_DIR:RegKit>/assets/bitfields"
COMMAND ${CMAKE_COMMAND} -E rm -rf "$<TARGET_FILE_DIR:RegKit>/assets/lang"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:RegKit>/assets/lang"
COMMAND ${CMAKE_COMMAND} -E rm -rf "$<TARGET_FILE_DIR:RegKit>/assets/comments"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/assets/comments"
"$<TARGET_FILE_DIR:RegKit>/assets/comments"
)
if (REGKIT_LANGUAGE_FILES)
add_custom_command(TARGET RegKit POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${REGKIT_LANGUAGE_FILES} "$<TARGET_FILE_DIR:RegKit>/assets/lang"
)
endif()
if (MSVC)
target_link_options(RegKit PRIVATE "/MANIFEST:NO")
endif()
regkit_verify_dependency_order(
regkit_win32
regkit_records
regkit_work
regkit_ui
regkit_registry
regkit_regfile
regkit_search
regkit_trace
regkit_defaults
regkit_changes
regkit_workspace
regkit_browse
regkit_dialogs
regkit_frame
regkit_cli
RegKit
)
regkit_verify_include_order(win32 records work ui registry regfile search trace defaults changes workspace browse dialogs frame cli launch)