Skip to content

Commit

Permalink
CMake: build Protobuf project
Browse files Browse the repository at this point in the history
  • Loading branch information
Wend4r committed Sep 3, 2024
1 parent d1df8f1 commit 03c063e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ set(PROJECT_DESCRIPTION_FULL "Source SDK toolkit")
string(TIMESTAMP PROJECT_BUILD_DATE "%Y-%m-%d")
string(TIMESTAMP PROJECT_BUILD_TIME "%H:%M:%S")

set(THIRDPARTY_DIR "thirdparty")
set(PROTOBUF_DIR "${THIRDPARTY_DIR}/protobuf-3.21.8")
set(SOURCESDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

set(SOURCESDK_PROTO_DIRS
Expand Down Expand Up @@ -55,6 +57,7 @@ elseif(WINDOWS)
include("cmake/platform/windows.cmake")
endif()

include("cmake/protobuf.cmake")
include("cmake/sourcesdk.cmake")
include("cmake/sourcesdk/proto.cmake")
include("cmake/sourcesdk/targets/entity2.cmake")
Expand All @@ -78,4 +81,4 @@ target_link_options(${PROJECT_NAME} PRIVATE ${PLATFORM_LINKER_OPTIONS} ${SOURCES
target_compile_definitions(${PROJECT_NAME} PRIVATE ${PLATFORM_COMPILE_DEFINITIONS} ${SOURCESDK_COMPILE_DEFINTIONS})
target_include_directories(${PROJECT_NAME} PRIVATE ${PLATFORM_INCLUDE_DIR} ${SOURCESDK_INCLUDE_DIR})

target_link_libraries(${PROJECT_NAME} PUBLIC ${PLATFORM_LINK_LIBRARIES} ${SOURCESDK_LINK_LIBRARIES} ${SOURCESDK_PROTOBUF_STATIC_LIBRARY} ${SOURCESDK_ENTITY2_NAME} ${SOURCESDK_INTERFACES_NAME} ${SOURCESDK_MATHLIB_NAME} ${SOURCESDK_TIER1_NAME})
target_link_libraries(${PROJECT_NAME} PUBLIC ${PLATFORM_LINK_LIBRARIES} ${SOURCESDK_LINK_LIBRARIES} ${SOURCESDK_ENTITY2_NAME} ${SOURCESDK_INTERFACES_NAME} ${SOURCESDK_MATHLIB_NAME} ${SOURCESDK_TIER1_NAME} ${PROTOBUF_BINARY_DIR})
12 changes: 12 additions & 0 deletions cmake/protobuf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
if(NOT PROTOBUF_DIR)
message(FATAL_ERROR "PROTOBUF_DIR is empty")
endif()

set(PROTOBUF_NAME "protobuf")
set(PROTOBUF_LIB_NAME "lib${PROTOBUF_NAME}")
set(PROTOBUF_BINARY_DIR "${PROTOBUF_NAME}")

set(${PROTOBUF_NAME}_INSTALL OFF CACHE BOOL "Install protobuf binaries and files")
set(${PROTOBUF_NAME}_BUILD_TESTS OFF CACHE BOOL "Build tests")
add_subdirectory(${PROTOBUF_DIR} ${PROTOBUF_BINARY_DIR})
set_target_properties(${PROTOBUF_LIB_NAME} PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF)
9 changes: 5 additions & 4 deletions cmake/sourcesdk/proto.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
if(NOT PROTOBUF_DIR)
message(FATAL_ERROR "PROTOBUF_DIR is empty")
endif()

if(NOT SOURCESDK_DIR)
message(FATAL_ERROR "SOURCESDK_DIR is empty")
endif()
Expand All @@ -9,14 +13,11 @@ endif()
## Generate protobuf source & headers
if(LINUX)
set(SOURCESDK_PROTOC_EXECUTABLE ${SOURCESDK_DIR}/devtools/bin/linux/protoc)
set(SOURCESDK_PROTOBUF_STATIC_LIBRARY ${SOURCESDK_LIB_DIR}/linux64/release/libprotobuf.a)
elseif(WINDOWS)
set(SOURCESDK_PROTOC_EXECUTABLE ${SOURCESDK_DIR}/devtools/bin/protoc.exe)
set(SOURCESDK_PROTOBUF_STATIC_LIBRARY ${SOURCESDK_LIB_DIR}/public/win64/2015/libprotobuf.lib)
endif()

set(SOURCESDK_PROTOBUF_DIR "${SOURCESDK_DIR}/thirdparty/protobuf-3.21.8")
set(SOURCESDK_PROTOBUF_SOURCE_DIR "${SOURCESDK_PROTOBUF_DIR}/src")
set(SOURCESDK_PROTOBUF_SOURCE_DIR "${PROTOBUF_DIR}/src")
list(APPEND SOURCESDK_INCLUDE_DIR ${SOURCESDK_PROTOBUF_SOURCE_DIR})

set(SOURCESDK_PROTO_FILENAME_FILES
Expand Down

0 comments on commit 03c063e

Please sign in to comment.