-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
113 lines (100 loc) · 3.68 KB
/
Copy pathCMakeLists.txt
File metadata and controls
113 lines (100 loc) · 3.68 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
cmake_minimum_required(VERSION 3.16)
project(FFXVUnlocker VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
# Find Qt6
find_package(Qt6 REQUIRED COMPONENTS Widgets Network)
# Include directories
include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/thirdparty
)
# Source files
set(SOURCES
src/main.cpp
src/MainWindow.cpp
src/MemoryEditor.cpp
src/PatternScanner.cpp
src/HttpServer.cpp
)
# Header files
set(HEADERS
include/MainWindow.h
include/MemoryEditor.h
include/PatternScanner.h
include/HttpServer.h
include/Patches.h
)
# Resources
set(RESOURCES
resources/resources.qrc
)
# Create executable
add_executable(${PROJECT_NAME} WIN32
${SOURCES}
${HEADERS}
${RESOURCES}
resources/app.manifest
resources/app.rc
)
# Link libraries
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt6::Widgets
Qt6::Network
ws2_32 # Winsock for HTTP server
psapi # Process API for memory operations
)
# Option to skip post-build copy (for CI builds that handle this separately)
option(SKIP_POST_BUILD_COPY "Skip post-build DLL copying" OFF)
if(NOT SKIP_POST_BUILD_COPY)
# Copy qt.conf to build directory (tells Qt to look for plugins in ./plugins)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_SOURCE_DIR}/resources/qt.conf"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/qt.conf"
)
# Copy required Qt DLLs to build directory
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../bin/Qt6Core.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../bin/Qt6Gui.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../bin/Qt6Widgets.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../bin/Qt6Network.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMENT "Copying Qt DLLs"
)
# Copy MinGW runtime DLLs (local development path)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"C:/Qt/Tools/mingw1310_64/bin/libgcc_s_seh-1.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"C:/Qt/Tools/mingw1310_64/bin/libstdc++-6.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"C:/Qt/Tools/mingw1310_64/bin/libwinpthread-1.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/"
COMMENT "Copying MinGW runtime DLLs"
)
# Create plugins directory structure and copy Qt plugins
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms"
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../plugins/platforms/qwindows.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${Qt6_DIR}/../../../plugins/styles/qmodernwindowsstyle.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/styles/"
COMMENT "Copying Qt plugins to plugins folder"
)
endif()