This repository has been archived by the owner on Jun 24, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
92 lines (75 loc) · 3.09 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
################## HELLO WORLD ##################
# Project configuration
cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_TOOLCHAIN_FILE "../../Managers/vcpkg/scripts/buildsystems/vcpkg.cmake")
project(AATMS
VERSION 1.3.8
DESCRIPTION "Advanced Automated Teller Machine System"
HOMEPAGE_URL "https://github.com/Jed556/AATMS"
LANGUAGES CXX
)
# Testing
include(CTest)
enable_testing()
# Setup directories
set(FOLDER_NAME ${PROJECT_NAME}-${PROJECT_VERSION}-win64)
set(CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${FOLDER_NAME}/bin)
################## INCLUDE AND LINK ##################
# Set executable output directory
set(MAIN_CPP ${CMAKE_SOURCE_DIR}/main.cpp)
file(GLOB_RECURSE SOURCE CONFIGURE_DEPENDS "src/*.h" "src/*.cpp")
list(REMOVE_ITEM SOURCE ${REMOVE_CMAKE})
add_executable(${PROJECT_NAME} ${SOURCE})
# Link libraries
find_package(unofficial-sqlite3 CONFIG REQUIRED)
find_package(SDL2 CONFIG REQUIRED)
find_package(SDL2_image CONFIG REQUIRED)
find_package(SDL2_ttf CONFIG REQUIRED)
find_package(sdl2-gfx CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME}
PRIVATE
unofficial::sqlite3::sqlite3
# $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main>
$<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>
$<IF:$<TARGET_EXISTS:SDL2_image::SDL2_image>,SDL2_image::SDL2_image,SDL2_image::SDL2_image-static>
$<IF:$<TARGET_EXISTS:SDL2_ttf::SDL2_ttf>,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static>
SDL2::SDL2_gfx
)
# Copy resources to build directory during the process
add_custom_target(copy_files ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/${FOLDER_NAME}/res
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/database ${CMAKE_BINARY_DIR}/${FOLDER_NAME}/database
COMMENT "Copying files during build"
)
# Add the custom target as a dependency of the main target
add_dependencies(${PROJECT_NAME} copy_files)
# Set the language for the target
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
################## PACKAGE ##################
# Setup package
set(CPACK_GENERATOR "ZIP")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-win64")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/package)
include(CPack)
# Package resources and libraries
install(DIRECTORY ${CMAKE_SOURCE_DIR}/database/ DESTINATION ${FOLDER_NAME}/database )
install(DIRECTORY ${CMAKE_SOURCE_DIR}/res/ DESTINATION ${FOLDER_NAME}/res )
install(TARGETS ${PROJECT_NAME} DESTINATION ${FOLDER_NAME}/bin)
install(FILES
$<TARGET_FILE:unofficial::sqlite3::sqlite3>
$<TARGET_FILE:SDL2::SDL2>
$<TARGET_FILE:SDL2_ttf::SDL2_ttf>
$<TARGET_FILE:SDL2_image::SDL2_image>
src/bin/libstdc++-6.dll
src/bin/libgcc_s_seh-1.dll
src/bin/freetype.dll
DESTINATION ${FOLDER_NAME}/bin
)
################## CUSTOM TARGETS ##################
# Custom target for auto packing and running
add_custom_target(PackU
COMMAND echo "Building the project"
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package
)