66 lines
2.6 KiB
CMake
66 lines
2.6 KiB
CMake
# Credit for this protobuf generation cmake file goes to Poggicek.
|
|
# Based on their work at https://github.com/Poggicek/StickerInspect
|
|
|
|
set(PROTO_TARGETS
|
|
${CSGO_PROTO_DIR}/network_connection.proto
|
|
${CSGO_PROTO_DIR}/networkbasetypes.proto
|
|
${CSGO_PROTO_DIR}/cs_gameevents.proto
|
|
${CSGO_PROTO_DIR}/cs_usercmd.proto
|
|
${CSGO_PROTO_DIR}/base_gcmessages.proto
|
|
${CSGO_PROTO_DIR}/econ_gcmessages.proto
|
|
${CSGO_PROTO_DIR}/engine_gcmessages.proto
|
|
${CSGO_PROTO_DIR}/gcsdk_gcmessages.proto
|
|
${CSGO_PROTO_DIR}/gcsystemmsgs.proto
|
|
${CSGO_PROTO_DIR}/cstrike15_gcmessages.proto
|
|
${CSGO_PROTO_DIR}/cstrike15_usermessages.proto
|
|
${CSGO_PROTO_DIR}/source2_steam_stats.proto
|
|
${CSGO_PROTO_DIR}/netmessages.proto
|
|
${CSGO_PROTO_DIR}/steammessages.proto
|
|
${CSGO_PROTO_DIR}/usercmd.proto
|
|
${CSGO_PROTO_DIR}/usermessages.proto
|
|
${CSGO_PROTO_DIR}/gameevents.proto
|
|
${CSGO_PROTO_DIR}/clientmessages.proto
|
|
${CSGO_PROTO_DIR}/te.proto
|
|
${CSGO_PROTO_DIR}/valveextensions.proto
|
|
)
|
|
|
|
if(UNIX)
|
|
set(PROTOC_EXECUTABLE ${SOURCESDK_DIR}/devtools/bin/linux/protoc)
|
|
elseif(WIN32)
|
|
set(PROTOC_EXECUTABLE ${SOURCESDK_DIR}/devtools/bin/protoc.exe)
|
|
endif()
|
|
|
|
foreach(PROTO_TARGET ${PROTO_TARGETS})
|
|
get_filename_component(PROTO_FILENAME ${PROTO_TARGET} NAME_WLE)
|
|
list(APPEND PROTO_OUTPUT ${PROTO_FILENAME}.pb.cc ${PROTO_FILENAME}.pb.h)
|
|
list(APPEND PROTO_INPUT ${PROTO_FILENAME}.proto)
|
|
get_filename_component(PROTO_PATH ${PROTO_TARGET} DIRECTORY)
|
|
list(APPEND PROTO_PATHS "--proto_path=${PROTO_PATH}")
|
|
endforeach()
|
|
|
|
list(REMOVE_DUPLICATES PROTO_PATHS)
|
|
list(TRANSFORM PROTO_OUTPUT PREPEND ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler/)
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${PROTO_OUTPUT}
|
|
COMMAND "${PROTOC_EXECUTABLE}" -I ${SOURCESDK_DIR}/thirdparty/protobuf-3.21.8/src --proto_path=${CSGO_PROTO_DIR} ${PROTO_PATHS} --cpp_out=${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler ${PROTO_INPUT}
|
|
COMMENT "Generating protobuf file"
|
|
)
|
|
|
|
add_library(Protobufs STATIC
|
|
${PROTO_OUTPUT}
|
|
)
|
|
|
|
target_include_directories(Protobufs
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/protobufcompiler
|
|
PUBLIC ${SOURCESDK_DIR}/thirdparty/protobuf-3.21.8/src
|
|
)
|
|
|
|
if(WIN32)
|
|
target_link_libraries(Protobufs PUBLIC ${SOURCESDK_DIR}/lib/public/win64/2015/libprotobuf.lib)
|
|
elseif(UNIX)
|
|
target_link_libraries(Protobufs PUBLIC ${SOURCESDK_DIR}/lib/linux64/release/libprotobuf.a)
|
|
endif()
|
|
set_target_properties(Protobufs PROPERTIES LINKER_LANGUAGE CXX)
|
|
set_target_properties(Protobufs PROPERTIES FOLDER SDK)
|