【发布时间】:2020-07-04 08:07:50
【问题描述】:
我不熟悉 cmake 和 protobuf。我想写一个CMakeLists.txt来帮助我将指定目录下的所有protobuf文件生成到另一个指定目录中。
下面是我写的CMakeLists.txt,但是现在不能生成任何*.pb.h或者*.pb.cc。谁能告诉我我的 CMakeLists.txt 有什么问题?谢谢。
我使用的cmake版本是3.12,protoc版本是3.12。
file(GLOB_RECURSE children LIST_DIRECTORIES true "${CMAKE_CURRENT_SOURCE_DIR}/protos/*.proto")
SET(PROTO_META_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protos_cpp_hpp)
FOREACH(FIL ${children})
GET_FILENAME_COMPONENT(ABS_FIL ${FIL} ABSOLUTE)
GET_FILENAME_COMPONENT(FIL_WE ${FIL} NAME_WE)
LIST(APPEND PROTO_SRCS "${CMAKE_CURRENT_BINARY_DIR}/protos_cpp_hpp/${FIL_WE}.pb.cc")
LIST(APPEND PROTO_HDRS "${CMAKE_CURRENT_BINARY_DIR}/protos_cpp_hpp/${FIL_WE}.pb.h")
# EXECUTE_PROCESS(
# COMMAND PROTOBUF_GENERATE_CPP --cpp_out=${PROTO_META_BASE_DIR} ${FIL}
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/protos
# )
PROTOBUF_GENERATE_CPP(PROTO_SRC PROTO_HDR ${CMAKE_SOURCE_DIR}/protos/${FIL})
ENDFOREACH()
【问题讨论】:
标签: cmake protocol-buffers protobuf-c