From 8344886283f78f94e9948a919e2e595ec34d689e Mon Sep 17 00:00:00 2001 From: Tao He Date: Tue, 8 Sep 2020 11:44:32 +0800 Subject: [PATCH] Move generated protobuf files to binary directory. Signed-off-by: Tao He --- CMakeLists.txt | 22 ++++++++++++++++++++++ proto/CMakeLists.txt | 11 +++++++---- src/CMakeLists.txt | 25 ++----------------------- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16960b2..63d434a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,3 +49,25 @@ add_subdirectory(src) if (BUILD_TESTS) add_subdirectory(tst) endif () + +install (TARGETS etcd-cpp-api DESTINATION lib) +install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/etcd/Client.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/etcd/SyncClient.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/etcd/Response.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/etcd/Value.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/etcd/Watcher.hpp + DESTINATION include/etcd) +install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/etcd/v3/Transaction.hpp + DESTINATION include/etcd/v3) +install (FILES ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/auth.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/kv.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/rpc.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/rpc.grpc.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/v3lock.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/v3lock.grpc.pb.h + DESTINATION include/etcd/proto) +install (FILES ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/gogoproto/gogo.pb.h + DESTINATION include/etcd/proto/gogoproto) +install (FILES ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/google/api/annotations.pb.h + ${CMAKE_CURRENT_BINARY_DIR}/proto/gen/proto/google/api/http.pb.h + DESTINATION include/etcd/proto/google/api) diff --git a/proto/CMakeLists.txt b/proto/CMakeLists.txt index d46a2c6..49e73c9 100644 --- a/proto/CMakeLists.txt +++ b/proto/CMakeLists.txt @@ -1,22 +1,25 @@ file(GLOB_RECURSE PROTO_SRCS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.proto") +set(PROTO_GEN_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/gen/proto") +file(MAKE_DIRECTORY "${PROTO_GEN_OUT_DIR}") + # use `protobuf_generate` rather than `protobuf_generate_cpp` since we want to # output the generated files to source dir, rather than binary dir. protobuf_generate_latest( LANGUAGE cpp OUT_VAR PROTO_GENERATES - PROTOC_OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" + PROTOC_OUT_DIR "${PROTO_GEN_OUT_DIR}" PROTOS ${PROTO_SRCS} ) -compute_generated_srcs(PROTO_GENERATES_SRCS "${CMAKE_CURRENT_SOURCE_DIR}" false ${PROTO_SRCS}) +compute_generated_srcs(PROTO_GENERATES_SRCS "${PROTO_GEN_OUT_DIR}" false ${PROTO_SRCS}) set(PROTO_GRPC_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/rpc.proto" "${CMAKE_CURRENT_SOURCE_DIR}/v3lock.proto") grpc_generate_cpp(PROTO_GRPC_GENERATES PROTO_GRPC_GENERATES_HDRS - "${CMAKE_CURRENT_SOURCE_DIR}" + "${PROTO_GEN_OUT_DIR}" ${PROTO_GRPC_SRCS} ) -compute_generated_srcs(PROTO_GRPC_GENERATES_SRCS "${CMAKE_CURRENT_SOURCE_DIR}" true ${PROTO_GRPC_SRCS}) +compute_generated_srcs(PROTO_GRPC_GENERATES_SRCS "${PROTO_GEN_OUT_DIR}" true ${PROTO_GRPC_SRCS}) # populate `PROTOBUF_GENERATES` in the parent scope. set(PROTOBUF_GENERATE_DEPS) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dda4d3f..04839e5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,6 @@ set_source_files_properties(${PROTOBUF_GENERATES} PROPERTIES GENERATED TRUE) add_library(etcd-cpp-api SHARED ${CPP_CLIENT_SRC} ${PROTOBUF_GENERATES}) add_dependencies(etcd-cpp-api protobuf_generates) set_property(TARGET etcd-cpp-api PROPERTY CXX_STANDARD 11) -target_include_directories(etcd-cpp-api PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../proto) target_link_libraries(etcd-cpp-api PUBLIC ${CPPREST_LIB} @@ -15,25 +14,5 @@ target_link_libraries(etcd-cpp-api PUBLIC ${PROTOBUF_LIBRARIES} ${OPENSSL_LIBRARIES} ${GRPC_LIBRARIES}) - -install (TARGETS etcd-cpp-api DESTINATION lib) -install (FILES ../etcd/Client.hpp - ../etcd/SyncClient.hpp - ../etcd/Response.hpp - ../etcd/Value.hpp - ../etcd/Watcher.hpp - DESTINATION include/etcd) -install (FILES ../proto/auth.pb.h - ../proto/kv.pb.h - ../proto/rpc.pb.h - ../proto/rpc.grpc.pb.h - ../proto/v3lock.pb.h - ../proto/v3lock.grpc.pb.h - DESTINATION include/etcd/proto) -install (FILES ../etcd/v3/Transaction.hpp - DESTINATION include/etcd/v3) -install (FILES ../proto/gogoproto/gogo.pb.h - DESTINATION include/etcd/proto/gogoproto) -install (FILES ../proto/google/api/annotations.pb.h - ../proto/google/api/http.pb.h - DESTINATION include/etcd/proto/google/api) +target_include_directories(etcd-cpp-api PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../proto/gen) +target_include_directories(etcd-cpp-api PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../proto/gen/proto)