diff --git a/CMakeLists.txt b/CMakeLists.txt index bb3a57202..32e431287 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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") @@ -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}) diff --git a/cmake/protobuf.cmake b/cmake/protobuf.cmake index 9f0b5242f..3bb68bb74 100644 --- a/cmake/protobuf.cmake +++ b/cmake/protobuf.cmake @@ -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$<$:Debug>") -endif() diff --git a/cmake/protobuf/targets/libprotobuf-lite.cmake b/cmake/protobuf/targets/libprotobuf-lite.cmake new file mode 100644 index 000000000..041142c8b --- /dev/null +++ b/cmake/protobuf/targets/libprotobuf-lite.cmake @@ -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$<$: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}) diff --git a/cmake/protobuf/targets/libprotobuf.cmake b/cmake/protobuf/targets/libprotobuf.cmake new file mode 100644 index 000000000..dc51c348d --- /dev/null +++ b/cmake/protobuf/targets/libprotobuf.cmake @@ -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$<$: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}) diff --git a/cmake/protobuf/targets/libprotoc.cmake b/cmake/protobuf/targets/libprotoc.cmake new file mode 100644 index 000000000..5172008b7 --- /dev/null +++ b/cmake/protobuf/targets/libprotoc.cmake @@ -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$<$: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}) diff --git a/cmake/protobuf/targets/protoc.cmake b/cmake/protobuf/targets/protoc.cmake new file mode 100644 index 000000000..7d22d5b2d --- /dev/null +++ b/cmake/protobuf/targets/protoc.cmake @@ -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$<$: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})