|
1 | 1 | cmake_minimum_required(VERSION 3.26)
|
2 | 2 |
|
3 |
| -SET(PROJECT_AUTHOR "FlayaN") |
| 3 | +set(PROJECT_AUTHOR "FlayaN") |
4 | 4 | project(
|
5 |
| - commonlibsse-ng-submodule-template |
6 |
| - VERSION 0.0.1 |
7 |
| - LANGUAGES CXX |
8 |
| -) |
| 5 | + commonlibsse-ng-submodule-template |
| 6 | + VERSION 0.0.1 |
| 7 | + LANGUAGES CXX) |
9 | 8 |
|
10 |
| -# ######################################################################################################################## |
11 |
| -# ## Source build guard |
12 |
| -# ######################################################################################################################## |
| 9 | +# ############################################################################## |
| 10 | +# # Source build guard |
| 11 | +# ############################################################################## |
13 | 12 |
|
14 | 13 | if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
|
15 |
| - message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there.") |
| 14 | + message( |
| 15 | + FATAL_ERROR |
| 16 | + "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there." |
| 17 | + ) |
16 | 18 | endif()
|
17 | 19 |
|
18 |
| -# ######################################################################################################################## |
19 |
| -# ## Build options |
20 |
| -# ######################################################################################################################## |
| 20 | +# ############################################################################## |
| 21 | +# # Add CommonLibNG plugin |
| 22 | +# ############################################################################## |
21 | 23 |
|
22 |
| -macro(set_from_environment VARIABLE) |
23 |
| - if (NOT DEFINED ${VARIABLE} AND DEFINED ENV{${VARIABLE}}) |
24 |
| - set(${VARIABLE} $ENV{${VARIABLE}}) |
25 |
| - endif () |
26 |
| -endmacro() |
| 24 | +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") |
| 25 | +include(CLIBNGPlugin) |
| 26 | +add_simple_commonlibsse_ng_plugin(AUTHOR "${PROJECT_AUTHOR}" LICENSE |
| 27 | + "MIT License") |
27 | 28 |
|
28 |
| -set_from_environment(OUTPUT_DIRS) |
| 29 | +# ############################################################################## |
| 30 | +# # Build options |
| 31 | +# ############################################################################## |
29 | 32 |
|
30 | 33 | message("Options:")
|
31 |
| -option(COPY_BUILD "Copy the build output to the Skyrim directory, also need OUTPUT_DIRS" OFF) |
32 | 34 | option(ZIP_TO_DIST "Zip the mod to 7z file in dist." ON)
|
33 |
| -message("\tCopy build output: ${COPY_BUILD}") |
34 |
| -message("\t\tCopy build output path OUTPUT_DIRS: ${OUTPUT_DIRS}") |
35 | 35 | message("\tZip to dist: ${ZIP_TO_DIST}")
|
36 | 36 |
|
37 |
| -# ####################################################################################################################### |
38 |
| -# # Add CMake features |
39 |
| -# ####################################################################################################################### |
40 |
| - |
41 |
| -configure_file( |
42 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Plugin.h.in |
43 |
| - ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h |
44 |
| - @ONLY |
45 |
| -) |
46 |
| - |
47 |
| -configure_file( |
48 |
| - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.rc.in |
49 |
| - ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc |
50 |
| - @ONLY |
51 |
| -) |
52 |
| - |
53 |
| -set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
54 |
| -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) |
55 |
| -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF) |
56 |
| -set(CommonLibPath "extern/CommonLibSSE-NG") |
57 |
| - |
58 |
| -# ####################################################################################################################### |
| 37 | +# ############################################################################## |
59 | 38 | # # Find dependencies
|
60 |
| -# ####################################################################################################################### |
| 39 | +# ############################################################################## |
61 | 40 |
|
62 | 41 | find_path(CLIB_UTIL_INCLUDE_DIRS "ClibUtil/detail/SimpleIni.h")
|
63 | 42 |
|
64 |
| -# ####################################################################################################################### |
65 |
| -# # CommonLibSSE-NG Plugin |
66 |
| -# ####################################################################################################################### |
67 |
| - |
68 |
| -include(${CommonLibPath}/cmake/CommonLibSSE.cmake) |
69 |
| -add_subdirectory(${CommonLibPath}) |
70 |
| -add_commonlibsse_plugin( |
71 |
| - ${PROJECT_NAME} |
72 |
| - AUTHOR ${PROJECT_AUTHOR} |
73 |
| - SOURCES ${INCLUDE_HEADERS} ${SOURCE_HEADERS} ${SOURCES} |
74 |
| -) |
75 |
| - |
76 |
| -# ####################################################################################################################### |
77 |
| -# # Headers and sources |
78 |
| -# ####################################################################################################################### |
79 |
| - |
80 |
| -include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/AddCXXFiles.cmake) |
81 |
| -add_cxx_files("${PROJECT_NAME}") |
82 |
| - |
83 |
| -# ####################################################################################################################### |
| 43 | +# ############################################################################## |
84 | 44 | # # Post target setup
|
85 |
| -# ####################################################################################################################### |
| 45 | +# ############################################################################## |
86 | 46 |
|
87 |
| -target_precompile_headers( |
88 |
| - ${PROJECT_NAME} |
89 |
| - PRIVATE |
90 |
| - include/PCH.h |
91 |
| -) |
| 47 | +target_include_directories(${PROJECT_NAME} PRIVATE ${CLIB_UTIL_INCLUDE_DIRS}) |
92 | 48 |
|
93 |
| -target_sources( |
94 |
| - ${PROJECT_NAME} |
95 |
| - PRIVATE |
96 |
| - ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h |
97 |
| - ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc |
98 |
| -) |
99 |
| - |
100 |
| -target_compile_features( |
101 |
| - ${PROJECT_NAME} |
102 |
| - PRIVATE |
103 |
| - cxx_std_23 |
104 |
| -) |
105 |
| - |
106 |
| -target_include_directories( |
107 |
| - ${PROJECT_NAME} |
108 |
| - PRIVATE |
109 |
| - ${CMAKE_CURRENT_BINARY_DIR}/cmake |
110 |
| - ${CLIB_UTIL_INCLUDE_DIRS} |
111 |
| -) |
112 |
| - |
113 |
| -target_link_libraries( |
114 |
| - ${PROJECT_NAME} |
115 |
| - PRIVATE |
116 |
| - CommonLibSSE::CommonLibSSE |
117 |
| -) |
118 |
| - |
119 |
| -# https://gitlab.kitware.com/cmake/cmake/-/issues/24922 |
120 |
| -set_target_properties( |
121 |
| - ${PROJECT_NAME} |
122 |
| - PROPERTIES |
123 |
| - VS_USER_PROPS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/build_stl_modules.props |
124 |
| -) |
125 |
| - |
126 |
| -# ####################################################################################################################### |
127 |
| -# # Automatic deployment |
128 |
| -# ####################################################################################################################### |
129 |
| - |
130 |
| -if (COPY_BUILD) |
131 |
| - if (DEFINED OUTPUT_DIRS) |
132 |
| - foreach(OUTPUT_DIR OUTPUT_DIRS) |
133 |
| - message("Copying mod to ${OUTPUT_DIR}/SKSE/Plugins") |
134 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
135 |
| - COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${PROJECT_NAME}> ${OUTPUT_DIR}/SKSE/Plugins/ |
136 |
| - COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:${PROJECT_NAME}> ${OUTPUT_DIR}/SKSE/Plugins/ |
137 |
| - ) |
138 |
| - endforeach() |
139 |
| - else () |
140 |
| - message( |
141 |
| - WARNING |
142 |
| - "Variable OUTPUT_DIRS is not defined. Skipping post-build copy command." |
143 |
| - ) |
144 |
| - endif () |
145 |
| -endif () |
| 49 | +# ############################################################################## |
| 50 | +# # Generates a zip in /dist |
| 51 | +# ############################################################################## |
146 | 52 |
|
147 | 53 | if(ZIP_TO_DIST)
|
148 |
| - set(ZIP_DIR "${CMAKE_CURRENT_BINARY_DIR}/zip") |
149 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
150 |
| - COMMAND ${CMAKE_COMMAND} -E remove_directory "${ZIP_DIR}" ${CMAKE_SOURCE_DIR}/dist |
151 |
| - COMMAND ${CMAKE_COMMAND} -E make_directory "${ZIP_DIR}/SKSE/Plugins" ${CMAKE_SOURCE_DIR}/dist |
152 |
| - ) |
153 |
| - |
154 |
| - message("Copying mod to ${ZIP_DIR}.") |
155 |
| - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
156 |
| - COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${PROJECT_NAME}> "${ZIP_DIR}/SKSE/Plugins/" |
157 |
| - COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:${PROJECT_NAME}> "${ZIP_DIR}/SKSE/Plugins/" |
158 |
| - ) |
159 |
| - |
160 |
| - set(TARGET_ZIP "${PROJECT_NAME}${PROJECT_VERSION}.7z") |
161 |
| - message("Zipping ${ZIP_DIR} to ${CMAKE_SOURCE_DIR}/dist/${TARGET_ZIP}") |
162 |
| - ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD |
163 |
| - COMMAND ${CMAKE_COMMAND} -E tar cf ${CMAKE_SOURCE_DIR}/dist/${TARGET_ZIP} --format=7zip -- . |
164 |
| - WORKING_DIRECTORY ${ZIP_DIR} |
165 |
| - ) |
| 54 | + set(ZIP_DIR "${CMAKE_CURRENT_BINARY_DIR}/zip") |
| 55 | + add_custom_command( |
| 56 | + TARGET ${PROJECT_NAME} |
| 57 | + POST_BUILD |
| 58 | + COMMAND ${CMAKE_COMMAND} -E remove_directory "${ZIP_DIR}" |
| 59 | + ${CMAKE_SOURCE_DIR}/dist |
| 60 | + COMMAND ${CMAKE_COMMAND} -E make_directory "${ZIP_DIR}/SKSE/Plugins" |
| 61 | + ${CMAKE_SOURCE_DIR}/dist) |
| 62 | + |
| 63 | + message("Copying mod to ${ZIP_DIR}.") |
| 64 | + add_custom_command( |
| 65 | + TARGET ${PROJECT_NAME} |
| 66 | + POST_BUILD |
| 67 | + COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${PROJECT_NAME}> |
| 68 | + "${ZIP_DIR}/SKSE/Plugins/" |
| 69 | + COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_PDB_FILE:${PROJECT_NAME}> |
| 70 | + "${ZIP_DIR}/SKSE/Plugins/") |
| 71 | + |
| 72 | + set(TARGET_ZIP "${PROJECT_NAME}${PROJECT_VERSION}.7z") |
| 73 | + message("Zipping ${ZIP_DIR} to ${CMAKE_SOURCE_DIR}/dist/${TARGET_ZIP}") |
| 74 | + add_custom_command( |
| 75 | + TARGET ${PROJECT_NAME} |
| 76 | + POST_BUILD |
| 77 | + COMMAND ${CMAKE_COMMAND} -E tar cf ${CMAKE_SOURCE_DIR}/dist/${TARGET_ZIP} |
| 78 | + --format=7zip -- . |
| 79 | + WORKING_DIRECTORY ${ZIP_DIR}) |
166 | 80 | endif()
|
0 commit comments