@@ -4,7 +4,7 @@ project(PracticalToolsForSimpleDesign)
44set (CMAKE_CXX_STANDARD 17)
55set (CMAKE_CXX_STANDARD_REQUIRED ON )
66set (CMAKE_CXX_EXTENSIONS OFF )
7- if (MSVC )
7+ if (MSVC )
88 set (TARGET_COMPILE_OPTIONS
99 /W4
1010 )
1717 )
1818endif ()
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" )
2323endif ()
@@ -127,18 +127,39 @@ target_include_directories(PTSD SYSTEM PRIVATE
127127target_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 ()
132154else ()
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." )
136157endif ()
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)
141161endif ()
162+ target_compile_definitions (PTSD PRIVATE PTSD_ASSETS_DIR="${PTSD_ASSETS_DIR} " )
142163
143164target_compile_options (PTSD PRIVATE
144165 ${TARGET_COMPILE_OPTIONS}
0 commit comments