refactor(build): enhance CMake configurations for protobuf integration

- Updated CMake files to conditionally link against libprotobuf based on the YAZE_PROTOBUF_TARGET variable across various modules (core, net, agent, z3ed).
- Ensured consistent use of the static MSVC runtime to align with vcpkg static triplets.
- Improved clarity in build logs by adding status messages for whole-archive linking conditions.

Benefits:
- Enhances modularity and compatibility of the build system with protobuf.
- Streamlines the build process for different platforms by ensuring appropriate linking based on configuration options.
This commit is contained in:
scawful
2025-10-14 09:01:12 -04:00
parent a026207a2d
commit 01d3e46e87
17 changed files with 807 additions and 537 deletions

View File

@@ -39,12 +39,17 @@ endif()
if(YAZE_WITH_GRPC)
message(STATUS "Adding gRPC support to z3ed CLI")
target_link_libraries(z3ed PRIVATE grpc++ grpc++_reflection libprotobuf)
target_link_libraries(z3ed PRIVATE grpc++ grpc++_reflection)
if(YAZE_PROTOBUF_TARGET)
target_link_libraries(z3ed PRIVATE ${YAZE_PROTOBUF_TARGET})
endif()
# On Windows, force whole-archive linking for protobuf to ensure all symbols are included
if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_link_options(z3ed PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:libprotobuf>)
elseif(MSVC)
message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in z3ed (clang-cl)")
if(MSVC AND YAZE_PROTOBUF_TARGET)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_link_options(z3ed PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:${YAZE_PROTOBUF_TARGET}>)
else()
message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in z3ed (clang-cl)")
endif()
endif()
endif()