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> |
||
---|---|---|
.. | ||
BUILD.bazel | ||
CMakeLists.txt | ||
sandbox.h | ||
stringop_params.proto | ||
stringop.cc |