mirror of
https://github.com/google/sandboxed-api.git
synced 2024-03-22 13:11:30 +08:00
f44cca6c98
When embedding SAPI in an external CMake project, the version of `protobuf_generate_cpp` that we lifted from upstream protobuf produces the wrong generated file paths. For example, given this project structure: ``` /parent/ +-- myproject/ +-- myproject_build/ <- CMake build directory +-- sandboxed-api/ <- Checkout from GitHub ``` And a CMake file in `myproject/CMakeLists.txt` that embeds SAPI like this: ``` cmake_minimum_required(VERSION 3.12) project(SandboxedTest LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory( ${PROJECT_SOURCE_DIR}/../sandboxed-api ${PROJECT_BINARY_DIR}/sandboxed-api ) ``` Then `protobuf_generate_cpp` correctly invokes the protoc compiler to generate `/parent/myproject_build/sandboxed-api/sandboxed_api/proto_arg.proto.pb.cc'. However, the path of the generated source file that is passed to the C++ compiler will be `/parent/myproject_build/sandboxed-api/sandboxed_api/../../myproject_build/sandboxed-api/sandboxed_api/proto_arg.pb.cc`. Note the duplicated project build directory component in the canonicalized version: `/parent/myproject_build/myproject_build/sandboxed-api/sandboxed_api/proto_arg.pb.cc`. This change simple omits the computation of any relative file paths and simply uses `_pb_PROTOC_OUT_DIR` which defauls to `CMAKE_CURRENT_BINARY_DIR`, which should always contain the correct path. Signed-off-by: Christian Blichmann <mail@blichmann.eu> |
||
---|---|---|
.. | ||
bazel | ||
docs | ||
examples | ||
sandbox2 | ||
tools/generator2 | ||
util | ||
.bazelrc | ||
BUILD.bazel | ||
call.h | ||
client.cc | ||
CMakeLists.txt | ||
embed_file.cc | ||
embed_file.h | ||
file_toc.h | ||
lenval_core.h | ||
proto_arg.proto | ||
proto_helper.h | ||
rpcchannel.cc | ||
rpcchannel.h | ||
sandbox.cc | ||
sandbox.h | ||
sapi_test.cc | ||
transaction.cc | ||
transaction.h | ||
var_abstract.cc | ||
var_abstract.h | ||
var_array.h | ||
var_int.cc | ||
var_int.h | ||
var_lenval.cc | ||
var_lenval.h | ||
var_pointable.cc | ||
var_pointable.h | ||
var_proto.h | ||
var_ptr.h | ||
var_reg.h | ||
var_struct.h | ||
var_type.h | ||
var_void.h | ||
vars.h |