Simple empty window
This commit is contained in:
105
cmake/chk.cmake
Normal file
105
cmake/chk.cmake
Normal file
@@ -0,0 +1,105 @@
|
||||
include_guard()
|
||||
|
||||
include(GenerateExportHeader)
|
||||
|
||||
function(chk_add)
|
||||
cmake_parse_arguments(CHK "" "NAME;KIND;PREFIX;SRCBASE;BINBASE" "SRC;HDR;PUB;PRV" ${ARGN})
|
||||
|
||||
set(CHK_IS_LIB FALSE)
|
||||
set(CHK_IS_EXE FALSE)
|
||||
|
||||
if(NOT CHK_NAME)
|
||||
message(FATAL_ERROR "NAME is required")
|
||||
endif()
|
||||
if(CHK_KIND STREQUAL "lib")
|
||||
set(CHK_IS_LIB TRUE)
|
||||
elseif(CHK_KIND STREQUAL "exe")
|
||||
set(CHK_IS_EXE TRUE)
|
||||
elseif(NOT CHK_KIND)
|
||||
message(FATAL_ERROR "KIND is required")
|
||||
else()
|
||||
message(FATAL_ERROR "KIND must be either \"lib\" or \"exe\". was \"${CHK_KIND}\"")
|
||||
endif()
|
||||
if(NOT CHK_PREFIX)
|
||||
set(CHK_PREFIX "chk")
|
||||
endif()
|
||||
if(NOT CHK_SRCBASE)
|
||||
set(CHK_SRCBASE "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
endif()
|
||||
if(NOT CHK_BINBASE)
|
||||
set(CHK_BINBASE "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
|
||||
set(CHK_TARGET "${CHK_PREFIX}_${CHK_NAME}")
|
||||
string(TOUPPER "${CHK_NAME}" CHK_NAME_CAPS)
|
||||
string(TOUPPER "${CHK_PREFIX}" CHK_PREFIX_CAPS)
|
||||
string(TOUPPER "${CHK_TARGET}" CHK_TARGET_CAPS)
|
||||
|
||||
list(TRANSFORM CHK_SRC PREPEND "${CHK_SRCBASE}/src/${CHK_PREFIX}/${CHK_NAME}/")
|
||||
list(TRANSFORM CHK_HDR PREPEND "${CHK_SRCBASE}/include/${CHK_PREFIX}/${CHK_NAME}/")
|
||||
|
||||
if(CHK_IS_LIB)
|
||||
add_library(${CHK_TARGET})
|
||||
add_library(${CHK_PREFIX}::${CHK_NAME} ALIAS ${CHK_TARGET})
|
||||
|
||||
set(CHK_EXP_EXT "hpp")
|
||||
set(CHK_EXP_DIR ${CHK_BINBASE}/include/${CHK_PREFIX}/${CHK_NAME})
|
||||
set(CHK_EXP_HDR ${CHK_EXP_DIR}/Api.${CHK_EXP_EXT})
|
||||
|
||||
generate_export_header(${CHK_TARGET}
|
||||
EXPORT_FILE_NAME ${CHK_EXP_HDR}
|
||||
EXPORT_MACRO_NAME ${CHK_NAME_CAPS}_API
|
||||
NO_EXPORT_MACRO_NAME ${CHK_NAME_CAPS}_LOCAL
|
||||
PREFIX_NAME ${CHK_PREFIX_CAPS}_
|
||||
)
|
||||
|
||||
list(APPEND CHK_HDR ${CHK_EXP_HDR})
|
||||
elseif(CHK_IS_EXE)
|
||||
add_executable(${CHK_TARGET})
|
||||
endif()
|
||||
|
||||
target_sources(${CHK_TARGET}
|
||||
PUBLIC
|
||||
FILE_SET "${CHK_PREFIX}_${CHK_NAME}_headers"
|
||||
TYPE HEADERS
|
||||
BASE_DIRS
|
||||
"${CHK_SRCBASE}/include"
|
||||
"${CHK_BINBASE}/include"
|
||||
FILES
|
||||
${CHK_HDR}
|
||||
|
||||
PRIVATE
|
||||
${CHK_SRC}
|
||||
)
|
||||
|
||||
target_include_directories(${CHK_TARGET}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CHK_SRCBASE}/include>
|
||||
$<BUILD_INTERFACE:${CHK_BINBASE}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
target_link_libraries(${CHK_TARGET}
|
||||
PUBLIC
|
||||
${CHK_PUB}
|
||||
|
||||
PRIVATE
|
||||
${CHK_PRV}
|
||||
)
|
||||
|
||||
target_compile_features(${CHK_TARGET} PUBLIC cxx_std_23)
|
||||
|
||||
# Set linker language to C++
|
||||
set_target_properties(${CHK_TARGET} PROPERTIES LINKER_LANGUAGE CXX)
|
||||
|
||||
# Copy DLLs alongside the executable on Windows
|
||||
if (WIN32 AND CHK_IS_EXE)
|
||||
add_custom_command(TARGET ${CHK_TARGET} POST_BUILD
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy_if_different
|
||||
$<TARGET_RUNTIME_DLLS:${CHK_TARGET}>
|
||||
$<TARGET_FILE_DIR:${CHK_TARGET}>
|
||||
COMMAND_EXPAND_LISTS
|
||||
)
|
||||
endif()
|
||||
endfunction(chk_add)
|
||||
15
cmake/deps.cmake
Normal file
15
cmake/deps.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
include(FetchContent)
|
||||
|
||||
set(SDL3PP_FORCE_BUNDLED ON CACHE BOOL "")
|
||||
set(SDL3PP_ENABLE_IMAGE OFF CACHE BOOL "")
|
||||
set(SDL3PP_ENABLE_TTF OFF CACHE BOOL "")
|
||||
set(SDL3PP_ENABLE_MIXER OFF CACHE BOOL "")
|
||||
set(SDL3PP_BUILD_EXAMPLES OFF CACHE BOOL "")
|
||||
set(SDL3PP_BUILD_TESTS OFF CACHE BOOL "")
|
||||
set(SDL3PP_GEN_DOCS OFF CACHE BOOL "")
|
||||
|
||||
FetchContent_Declare(SDL3ppExternal
|
||||
URL https://github.com/talesm/SDL3pp/releases/download/0.9.2/SDL3pp-0.9.2.tar.gz
|
||||
OVERRIDE_FIND_PACKAGE
|
||||
)
|
||||
FetchContent_MakeAvailable(SDL3ppExternal)
|
||||
Reference in New Issue
Block a user