Skip to content

Commit 62127d2

Browse files
author
df
committed
Enhance: Re-add supports for other build types.
1 parent b55fbeb commit 62127d2

File tree

1 file changed

+32
-11
lines changed

1 file changed

+32
-11
lines changed

CMakeLists.txt

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ project(PracticalToolsForSimpleDesign)
44
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
set(CMAKE_CXX_EXTENSIONS OFF)
7-
if (MSVC)
7+
if(MSVC)
88
set(TARGET_COMPILE_OPTIONS
99
/W4
1010
)
@@ -17,7 +17,7 @@ else()
1717
)
1818
endif()
1919

20-
if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
20+
if(WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
2121
# see https://github.com/ntut-open-source-club/practical-tools-for-simple-design/issues/22
2222
set(CMAKE_RC_FLAGS="-C 1252")
2323
endif()
@@ -127,18 +127,39 @@ target_include_directories(PTSD SYSTEM PRIVATE
127127
target_include_directories(PTSD PRIVATE
128128
${INCLUDE_DIR}
129129
)
130-
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
131-
target_compile_definitions(PTSD PRIVATE PTSD_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets")
130+
131+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
132+
set(PTSD_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets" CACHE STRING "Path to assets directory")
133+
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
134+
set(PTSD_ASSETS_DIR "./assets" CACHE STRING "Path to assets directory")
135+
add_custom_target(PTSD_assets
136+
COMMAND ${CMAKE_COMMAND} -E copy_directory
137+
${CMAKE_CURRENT_SOURCE_DIR}/assets
138+
${CMAKE_BINARY_DIR}/assets
139+
)
140+
add_dependencies(PTSD PTSD_assets)
141+
142+
option(COPY_PTSD_CONFIG "Copy config.json to build directory" ON)
143+
if(COPY_PTSD_CONFIG)
144+
add_custom_target(PTSD_Config
145+
COMMAND ${CMAKE_COMMAND} -E copy
146+
${CMAKE_SOURCE_DIR}/config.json
147+
${CMAKE_BINARY_DIR}/config.json
148+
)
149+
add_dependencies(PTSD PTSD_Config)
150+
else()
151+
message(AUTHOR_WARNING
152+
"COPY_PTSD_CONFIG is set to OFF. The default configurations will be used.")
153+
endif()
132154
else()
133-
# TODO
134-
message(AUTHOR_WARNING "relative PTSD_ASSETS_DIR is WIP, Please use `-DCMAKE_BUILD_TYPE=Debug` build for now.")
135-
target_compile_definitions(PTSD PRIVATE PTSD_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets")
155+
message(AUTHOR_WARNING
156+
"Unknown build type: ${CMAKE_BUILD_TYPE}. Please ensure that You have passed PTSD_ASSETS_DIR to CMake.")
136157
endif()
137-
if (${PTSD_ENABLE_PCH})
138-
target_precompile_headers(PTSD PRIVATE
139-
include/pch.hpp
140-
)
158+
159+
if(NOT PROJECT_IS_TOP_LEVEL)
160+
set(PTSD_ASSETS_DIR ${PTSD_ASSETS_DIR} PARENT_SCOPE)
141161
endif()
162+
target_compile_definitions(PTSD PRIVATE PTSD_ASSETS_DIR="${PTSD_ASSETS_DIR}")
142163

143164
target_compile_options(PTSD PRIVATE
144165
${TARGET_COMPILE_OPTIONS}

0 commit comments

Comments
 (0)