CMake for protobuf library

时间:2018-01-15 03:41:07

标签: cmake protocol-buffers

我在this之后制作了自己的例子。但是我不想创建库,只是从.proto文件生成头文件和源文件。

所以,我只是改变:

的CMakeLists.txt

PROJECT(rpc)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
SET(CMAKE_CXX_FLAGS "-g -Wall -Werror -std=c++11")

ADD_SUBDIRECTORY(proto)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
ADD_EXECUTABLE(main main.cpp)
#TARGET_LINK_LIBRARIES(main proto ${PROTOBUF_LIBRARY})
TARGET_LINK_LIBRARIES(main ${PROTOBUF_LIBRARY}) #<==== I changed here

原/的CMakeLists.txt

INCLUDE(FindProtobuf)
FIND_PACKAGE(Protobuf REQUIRED)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
PROTOBUF_GENERATE_CPP(PROTO_SRC PROTO_HEADER message.proto)
#ADD_LIBRARY(proto ${PROTO_HEADER} ${PROTO_SRC}) #I don't compile lib anymore

但它不会从.proto生成头文件和源文件。所以它无法编译。我认为在使用add_subdirectory时,它不会运行命令protobuf_generate_cpp。任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以直接将${PROTO_HEADER} ${PROTO_SRC}添加到ADD_EXECUTABLE(main)来电,也可以将以下行添加到proto/CMakeLists.txt

add_custom_target(gen_proto ALL DEPENDS ${PROTO_HEADER} ${PROTO_SRC})