r5sdk/r5dev/core/CMakeLists.txt
Kawe Mazidjatari 894eea12de Only force multiple when build in Debug
Debug only, required for reliable '_xxxx_dbg' CRT allocator function overrides.
2023-06-30 22:02:27 +02:00

163 lines
3.3 KiB
CMake

cmake_minimum_required( VERSION 3.16 )
macro( add_sdk_project PROJECT_NAME )
add_module( "shared_lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
start_sources()
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
file( GLOB PNG_SOURCES
"${ENGINE_SOURCE_DIR}/resource/png/*.png"
)
add_sources( SOURCE_GROUP "Resource"
"${ENGINE_SOURCE_DIR}/resource/r5dev.rc"
"${PNG_SOURCES}"
)
endif()
add_sources( SOURCE_GROUP "Core"
"assert.h"
"dllmain.cpp"
"init.cpp"
"init.h"
"logdef.cpp"
"logdef.h"
"logger.cpp"
"logger.h"
"r5dev.h"
"resource.h"
"shared_pch.h"
"stdafx.cpp"
"stdafx.h"
"termutil.cpp"
"termutil.h"
)
target_link_libraries( ${PROJECT_NAME} PRIVATE
"advapi32.lib"
"bcrypt.lib"
"crypt32.lib"
"dbghelp.lib"
"wldap32.lib"
"ws2_32.lib"
"Rpcrt4.lib"
"vpc"
"memoverride"
"tier0"
"tier1"
"tier2"
"launcher"
"appframework"
"vstdlib"
"vpklib"
"mathlib"
"vphysics"
"SigCache_Pb"
"SV_RCon_Pb"
"CL_RCon_Pb"
"rtech_tools"
"rtech_game"
"stryder"
"libdetours"
"liblzham"
"libcurl"
"libprotobuf"
"libspdlog"
"libdetour"
"navdebugutils"
"networksystem"
"pluginsystem"
"filesystem"
"datacache"
"EbisuSDK"
"localize"
"vscript"
"game"
)
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
target_link_libraries( ${PROJECT_NAME} PRIVATE
"libimgui"
"codecs"
"inputsystem"
"materialsystem"
"studiorender"
"vguimatsurface"
"vgui"
"rui"
"engine"
"d3d11.lib"
)
else()
target_link_libraries( ${PROJECT_NAME} PRIVATE
"engine_ds"
)
endif()
if( ${PROJECT_NAME} STREQUAL "gamesdk" )
end_sources()
target_compile_definitions( ${PROJECT_NAME} PRIVATE
"GAMESDK"
)
elseif( ${PROJECT_NAME} STREQUAL "dedicated" )
end_sources()
target_compile_definitions( ${PROJECT_NAME} PRIVATE
"DEDICATED"
)
elseif( ${PROJECT_NAME} STREQUAL "client" )
end_sources( "${BUILD_OUTPUT_DIR}/bin/x64_retail/" )
target_compile_definitions( ${PROJECT_NAME} PRIVATE
"CLIENT_DLL"
)
endif()
target_link_options( ${PROJECT_NAME} PRIVATE
"/STACK:8000000" # Match game executable stack reserve size
# The only reason this has to be done, is because
# the _xxxx_dbg malloc functions could otherwise
# throw a linker error, as they are already defined
# in the CRT library, but there doesn't seem to be
# a standard way to override these, unlike the
# _xxxx_base malloc functions. Since this is only
# relevant for debug builds, this linker flag should
# only be toggled for DEBUG!!!
$<$<CONFIG:Debug>:/FORCE:MULTIPLE>
)
add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -P ${ENGINE_SOURCE_DIR}/cmake/PostBuild.cmake
)
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND "r5apex.exe"
)
else()
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND "r5apex_ds.exe"
)
endif()
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND_ARGUMENTS "-wconsole -ansicolor -dev -devsdk"
VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)../../../${BUILD_OUTPUT_DIR}/"
)
endmacro()
add_sdk_project( "gamesdk" )
add_sdk_project( "dedicated" )
#add_sdk_project( "client" )