r5sdk/r5dev/core/CMakeLists.txt

194 lines
4.1 KiB
CMake
Raw Normal View History

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"
2023-05-29 21:11:17 +02:00
"SigCache_Pb"
"SV_RCon_Pb"
"CL_RCon_Pb"
2023-05-13 10:34:23 +02:00
"rtech_tools"
"rtech_game"
"stryder"
"libdetours"
"liblzham"
"libcurl"
"libprotobuf"
"libspdlog"
"libdetour"
"navdebugutils"
"networksystem"
"pluginsystem"
"filesystem"
"datacache"
"EbisuSDK"
"GFSDK"
"localize"
"vscript"
"game_shared_static"
)
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
target_link_libraries( ${PROJECT_NAME} PRIVATE
"libimgui"
"codecs"
"inputsystem"
"materialsystem"
"studiorender"
"vguimatsurface"
"vgui"
"rui"
"d3d11.lib"
"${THIRDPARTY_SOURCE_DIR}/nvapi/amd64/nvapi64.lib"
)
endif()
# Determine the compiler definitions and link libraries per project.
if( ${PROJECT_NAME} STREQUAL "gamesdk" )
end_sources()
target_link_libraries( ${PROJECT_NAME} PRIVATE
"engine"
"server_static"
"client_static"
)
target_compile_definitions( ${PROJECT_NAME} PRIVATE
"GAMESDK"
)
elseif( ${PROJECT_NAME} STREQUAL "dedicated" )
end_sources()
target_link_libraries( ${PROJECT_NAME} PRIVATE
"materialsystem_nodx" # Needs the No-DirectX version for patching.
"engine_ds"
"server_static"
)
target_compile_definitions( ${PROJECT_NAME} PRIVATE
"MATERIALSYSTEM_NODX"
"SERVER_DLL"
"DEDICATED"
)
elseif( ${PROJECT_NAME} STREQUAL "client" )
end_sources( "${BUILD_OUTPUT_DIR}/bin/x64_retail/" )
target_link_libraries( ${PROJECT_NAME} PRIVATE
"engine_cl"
"client_static"
)
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( ${PROJECT_NAME} STREQUAL "dedicated" )
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND "r5apex_ds.exe"
)
else()
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND "r5apex.exe"
)
endif()
if( ${PROJECT_NAME} STREQUAL "client" )
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND_ARGUMENTS "-wconsole -ansicolor -dev -devsdk -noserverdll"
)
else()
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_COMMAND_ARGUMENTS "-wconsole -ansicolor -dev -devsdk"
VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)../../../${BUILD_OUTPUT_DIR}/"
)
endif()
set_target_properties( ${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)../../../${BUILD_OUTPUT_DIR}/"
)
endmacro()
add_sdk_project( "gamesdk" )
add_sdk_project( "dedicated" )
add_sdk_project( "client" )