-
Notifications
You must be signed in to change notification settings - Fork 2
/
CMakeLists.txt
86 lines (74 loc) · 3 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
cmake_minimum_required(VERSION 3.21)
# Set your project name. This will be the name of your SKSE .dll file.
project(
BruiserHandToHandSKSEPlugin
VERSION 1.0.0
DESCRIPTION "SKSE plugin to handle Bruiser HandToHand perk tree features."
LANGUAGES CXX)
set(PROJECT_FRIENDLY_NAME "BruiserHandToHand")
# If `SKYRIM_FOLDER` environment variable is set then DLL is copied on to the
# data directory post build
if(DEFINED ENV{SKYRIM_FOLDER} AND IS_DIRECTORY "$ENV{SKYRIM_FOLDER}/Data")
set(OUTPUT_FOLDER "$ENV{SKYRIM_FOLDER}/Data")
endif()
# If `SKYRIM_MODS_FOLDER` environment variable is set, then DLL is copied to the
# mod staging folder. Recommended over directly copying into the data folder.
if(DEFINED ENV{SKYRIM_MODS_FOLDER} AND IS_DIRECTORY "$ENV{SKYRIM_MODS_FOLDER}")
set(OUTPUT_FOLDER "$ENV{SKYRIM_MODS_FOLDER}/${PROJECT_NAME}")
endif()
# Otherwise, you can set OUTPUT_FOLDER to any place you'd like :)
# set(OUTPUT_FOLDER "C:/path/to/any/folder")
set(headers)
set(sources
src/animhandler.cpp
src/h2hlevel.cpp
src/hithandler.cpp
src/logger.cpp
src/plugin.cpp
src/scriptutil.cpp)
# Setup your SKSE plugin as an SKSE plugin!
find_package(CommonLibSSE CONFIG REQUIRED)
add_commonlibsse_plugin(
${PROJECT_NAME}
AUTHOR
"vsky1"
SOURCES
${headers}
${sources})
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_23)
target_precompile_headers(${PROJECT_NAME} PRIVATE src/PCH.h)
target_include_directories(${PROJECT_NAME} PRIVATE include)
# When your SKSE .dll is compiled, this will automatically copy the .dll into
# your mods folder. Only works if you configure DEPLOY_ROOT above (or set the
# SKYRIM_MODS_FOLDER environment variable)
if(DEFINED OUTPUT_FOLDER)
# If you specify an <OUTPUT_FOLDER> (including via environment variables)
# then we'll copy your mod files into Skyrim or a mod manager for you!
# Copy the SKSE plugin .dll files into the SKSE/Plugins/ folder
set(DLL_FOLDER "${OUTPUT_FOLDER}/SKSE/Plugins")
message(STATUS "SKSE plugin output folder: ${DLL_FOLDER}")
add_custom_command(
TARGET "${PROJECT_NAME}"
POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E make_directory "${DLL_FOLDER}"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
"$<TARGET_FILE:${PROJECT_NAME}>"
"${DLL_FOLDER}/$<TARGET_FILE_NAME:${PROJECT_NAME}>"
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/BruiserHandToHandSKSEPlugin.ini"
"${DLL_FOLDER}/BruiserHandToHandSKSEPlugin.ini"
VERBATIM)
# If you perform a "Debug" build, also copy .pdb file (for debug symbols)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_custom_command(
TARGET "${PROJECT_NAME}"
POST_BUILD
COMMAND
"${CMAKE_COMMAND}" -E copy_if_different
"$<TARGET_PDB_FILE:${PROJECT_NAME}>"
"${DLL_FOLDER}/$<TARGET_PDB_FILE_NAME:${PROJECT_NAME}>"
VERBATIM)
endif()
endif()