Last active
June 5, 2025 01:13
-
-
Save lix19937/e93ab407e11dd5391ce420eda845bebc to your computer and use it in GitHub Desktop.
proto_cc.CMakeLists
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# by ljw 20250521 | |
# | |
# compile protos to a shared lib | |
# | |
cmake_minimum_required(VERSION 3.12) | |
project(adc_proto) | |
find_package(Protobuf REQUIRED) | |
file(GLOB_RECURSE PROTO_FILES | |
"common/*.proto" | |
"control/*.proto" | |
# "hmi/*.proto" | |
"localization/*.proto" | |
"map/*.proto" | |
"nni/*.proto" | |
"perception/*.proto" | |
"planning/*.proto" | |
"sensors/*.proto" | |
"simulation/*.proto" | |
"statemachine/*.proto" | |
"vehicle/*.proto" | |
) | |
set(LIB_NAME adc_proto) | |
set(CMAKE_BUILD_TYPE Release) | |
set(GENERATED_PROTO_SRCS) | |
set(GENERATED_PROTO_HDRS) | |
set(GENERATED_CC_DIR ${CMAKE_CURRENT_BINARY_DIR}/tmp) | |
set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/${RUN_PLATFORM}) | |
file(MAKE_DIRECTORY ${GENERATED_CC_DIR}) | |
include_directories(${GENERATED_CC_DIR}) | |
include_directories(${Protobuf_INCLUDE_DIRS}) | |
foreach(PROTO_FILE ${PROTO_FILES}) | |
get_filename_component(ABS_PATH ${PROTO_FILE} ABSOLUTE) | |
get_filename_component(FILENAME_WE ${PROTO_FILE} NAME_WE) | |
get_filename_component(CURRENT_DIR ${PROTO_FILE} DIRECTORY) | |
get_filename_component(LAST_DIR ${CURRENT_DIR} NAME) | |
set(GENERATED_SRC "${GENERATED_CC_DIR}/${LAST_DIR}/${FILENAME_WE}.pb.cc") | |
set(GENERATED_HDR "${GENERATED_CC_DIR}/${LAST_DIR}/${FILENAME_WE}.pb.h") | |
add_custom_command( | |
OUTPUT ${GENERATED_SRC} ${GENERATED_HDR} | |
COMMAND ${Protobuf_PROTOC_EXECUTABLE} | |
ARGS --cpp_out=${GENERATED_CC_DIR} | |
-I${CMAKE_CURRENT_SOURCE_DIR} ${ABS_PATH} | |
DEPENDS ${ABS_PATH} | |
) | |
list(APPEND GENERATED_PROTO_SRCS ${GENERATED_SRC}) | |
list(APPEND GENERATED_PROTO_HDRS ${GENERATED_HDR}) | |
endforeach() | |
add_library(${LIB_NAME} SHARED ${GENERATED_PROTO_SRCS} ${GENERATED_PROTO_HDRS}) | |
target_link_libraries(${LIB_NAME} ${Protobuf_LIBRARIES}) | |
foreach(PROTO_HDR ${GENERATED_PROTO_HDRS}) | |
get_filename_component(CURRENT_DIR ${PROTO_HDR} DIRECTORY) | |
get_filename_component(LAST_DIR ${CURRENT_DIR} NAME) | |
install(FILES ${PROTO_HDR} DESTINATION include/${LAST_DIR}) | |
endforeach() | |
install(TARGETS ${LIB_NAME} LIBRARY DESTINATION lib | |
ARCHIVE DESTINATION lib) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment