Skip to content

Commit

Permalink
CMake (Protobuf): split to targets
Browse files Browse the repository at this point in the history
  • Loading branch information
Wend4r committed Sep 3, 2024
1 parent eb07a42 commit 8a95daf
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 13 deletions.
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ elseif(WINDOWS)
endif()

include("cmake/protobuf.cmake")
include("cmake/protobuf/targets/libprotobuf-lite.cmake")
include("cmake/protobuf/targets/libprotobuf.cmake")
include("cmake/protobuf/targets/libprotoc.cmake")
include("cmake/protobuf/targets/protoc.cmake")

include("cmake/sourcesdk.cmake")
include("cmake/sourcesdk/proto.cmake")
include("cmake/sourcesdk/targets/entity2.cmake")
Expand Down Expand Up @@ -87,4 +92,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} ${PROTOBUF_NAME}::${PROTOBUF_LIB_NAME} ${SOURCESDK_LINK_LIBRARIES} ${SOURCESDK_ENTITY2_NAME} ${SOURCESDK_INTERFACES_NAME} ${SOURCESDK_MATHLIB_NAME} ${SOURCESDK_TIER1_NAME})
target_link_libraries(${PROJECT_NAME} PUBLIC ${PLATFORM_LINK_LIBRARIES} ${PROTOBUF_LIB_NAME} ${SOURCESDK_LINK_LIBRARIES} ${SOURCESDK_ENTITY2_NAME} ${SOURCESDK_INTERFACES_NAME} ${SOURCESDK_MATHLIB_NAME} ${SOURCESDK_TIER1_NAME})
16 changes: 4 additions & 12 deletions cmake/protobuf.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,12 @@ if(NOT PROTOBUF_DIR)
endif()

set(PROTOBUF_NAME "protobuf")
set(PROTOBUF_LIB_NAME "lib${PROTOBUF_NAME}")
set(PROTOBUF_BINARY_DIR "${PROTOBUF_NAME}")
set(PROTOBUF_LIBPPROTOBUF_LITE_NAME "libprotobuf-lite")
set(PROTOBUF_LIBPPROTOBUF_NAME "libprotobuf")
set(PROTOBUF_LIBPROTOC_NAME "libprotoc")
set(PROTOBUF_PROTOC_NAME "protoc")

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
)

if(WIN32)
set_target_properties(${PROTOBUF_LIB_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
19 changes: 19 additions & 0 deletions cmake/protobuf/targets/libprotobuf-lite.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
if(NOT PROTOBUF_LIBPPROTOBUF_LITE_NAME)
message(FATAL_ERROR "PROTOBUF_LIBPPROTOBUF_LITE_NAME is empty")
endif()

set_target_properties(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)

if(WIN32)
set_target_properties(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()

target_compile_options(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PRIVATE ${PLATFORM_COMPILER_OPTIONS})
target_link_options(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PRIVATE ${PLATFORM_LINKER_OPTIONS})

target_compile_definitions(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PRIVATE ${PLATFORM_COMPILE_DEFINITIONS})
target_include_directories(${PROTOBUF_LIBPPROTOBUF_LITE_NAME} PRIVATE ${PLATFORM_INCLUDE_DIR})
19 changes: 19 additions & 0 deletions cmake/protobuf/targets/libprotobuf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
if(NOT PROTOBUF_LIBPPROTOBUF_NAME)
message(FATAL_ERROR "PROTOBUF_LIBPPROTOBUF_NAME is empty")
endif()

set_target_properties(${PROTOBUF_LIBPPROTOBUF_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)

if(WIN32)
set_target_properties(${PROTOBUF_LIBPPROTOBUF_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()

target_compile_options(${PROTOBUF_LIBPPROTOBUF_NAME} PRIVATE ${PLATFORM_COMPILER_OPTIONS})
target_link_options(${PROTOBUF_LIBPPROTOBUF_NAME} PRIVATE ${PLATFORM_LINKER_OPTIONS})

target_compile_definitions(${PROTOBUF_LIBPPROTOBUF_NAME} PRIVATE ${PLATFORM_COMPILE_DEFINITIONS})
target_include_directories(${PROTOBUF_LIBPPROTOBUF_NAME} PRIVATE ${PLATFORM_INCLUDE_DIR})
19 changes: 19 additions & 0 deletions cmake/protobuf/targets/libprotoc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
if(NOT PROTOBUF_LIBPROTOC_NAME)
message(FATAL_ERROR "PROTOBUF_LIBPROTOC_NAME is empty")
endif()

set_target_properties(${PROTOBUF_LIBPROTOC_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)

if(WIN32)
set_target_properties(${PROTOBUF_LIBPROTOC_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()

target_compile_options(${PROTOBUF_LIBPROTOC_NAME} PRIVATE ${PLATFORM_COMPILER_OPTIONS})
target_link_options(${PROTOBUF_LIBPROTOC_NAME} PRIVATE ${PLATFORM_LINKER_OPTIONS})

target_compile_definitions(${PROTOBUF_LIBPROTOC_NAME} PRIVATE ${PLATFORM_COMPILE_DEFINITIONS})
target_include_directories(${PROTOBUF_LIBPROTOC_NAME} PRIVATE ${PLATFORM_INCLUDE_DIR})
19 changes: 19 additions & 0 deletions cmake/protobuf/targets/protoc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
if(NOT PROTOBUF_PROTOC_NAME)
message(FATAL_ERROR "PROTOBUF_PROTOC_NAME is empty")
endif()

set_target_properties(${PROTOBUF_PROTOC_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)

if(WIN32)
set_target_properties(${PROTOBUF_PROTOC_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()

target_compile_options(${PROTOBUF_PROTOC_NAME} PRIVATE ${PLATFORM_COMPILER_OPTIONS})
target_link_options(${PROTOBUF_PROTOC_NAME} PRIVATE ${PLATFORM_LINKER_OPTIONS})

target_compile_definitions(${PROTOBUF_PROTOC_NAME} PRIVATE ${PLATFORM_COMPILE_DEFINITIONS})
target_include_directories(${PROTOBUF_PROTOC_NAME} PRIVATE ${PLATFORM_INCLUDE_DIR})

0 comments on commit 8a95daf

Please sign in to comment.