# Copyright 2022 The Chromium Authors.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
cmake_minimum_required(VERSION 3.22)
# Set the path to the protoc protobuf compiler.
if(WIN)
set(PROTOC ${PROJECT_BINARY_DIR}/vcpkg/installed/x64-windows/tools/protobuf/protoc.exe)
elseif(MAC)
set(PROTOC ${PROJECT_BINARY_DIR}/vcpkg/installed/x64-osx/tools/protobuf/protoc)
elseif(LINUX)
set(PROTOC ${PROJECT_BINARY_DIR}/vcpkg/installed/x64-linux/tools/protobuf/protoc)
endif()
# Calls the protoc compiler using the arguments specific to this project.
# protobuf_generate_cpp is not flexible enough for our needs.
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/gen/content_analysis/sdk/analysis.pb.cc
COMMAND
${PROTOC}
--cpp_out=${PROJECT_BINARY_DIR}/gen
--proto_path=${PROJECT_SOURCE_DIR}/proto
${PROJECT_SOURCE_DIR}/proto/content_analysis/sdk/analysis.proto
DEPENDS ./proto/content_analysis/sdk/analysis.proto
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
# Define proto target. Compile this target exclusively by calling:
# `cmake --build <build_dir> --target proto`
add_custom_target(proto
ALL
DEPENDS
${PROJECT_BINARY_DIR}/gen/content_analysis/sdk/analysis.pb.cc
)
# The include directory contains the header files needed by the demo code.
# The gen directory contains generated protobuf headers describing the request
# and response objects used to communicate with Google Chrome.
set(AGENT_INCLUDES
./agent/include
.
${PROJECT_BINARY_DIR}/gen
)
set(BROWSER_INCLUDES
./browser/include
.
${PROJECT_BINARY_DIR}/gen
)
# The SDK contains platform specific code for each of the supported platforms.
# ${PLATFORM_AGENT_CODE} holds the list of source files needed for the current
# platform being built.
if(WIN)
set(PLATFORM_AGENT_CODE
./agent/src/agent_utils_win.cc
./agent/src/agent_utils_win.h
./agent/src/agent_win.cc
./agent/src/agent_win.h
./agent/src/event_win.cc
./agent/src/event_win.h
./agent/src/scoped_print_handle_win.cc
./agent/src/scoped_print_handle_win.h
./common/utils_win.cc
./common/utils_win.h
)
set(PLATFORM_TEST_CODE
./agent/src/agent_win_unittest.cc
./agent/src/event_win_unittest.cc
)
elseif(MAC)
set(PLATFORM_AGENT_CODE
./agent/src/agent_mac.cc
./agent/src/agent_mac.h
./agent/src/event_mac.cc
./agent/src/event_mac.h
./agent/src/scoped_print_handle_mac.cc
./agent/src/scoped_print_handle_mac.h
)
set(PLATFORM_TEST_CODE
./agent/src/event_mac_unittest.cc
)
elseif(LINUX)
set(PLATFORM_AGENT_CODE
./agent/src/agent_posix.cc
./agent/src/agent_posix.h
./agent/src/event_posix.cc
./agent/src/event_posix.h
./agent/src/scoped_print_handle_posix.cc
./agent/src/scoped_print_handle_posix.h
)
set(PLATFORM_TEST_CODE
./agent/src/event_posix_unittest.cc
)
endif()
# The SDK contains platform specific code for each of the supported platforms.
# ${PLATFORM_BROWSER_CODE} holds the list of source files needed for the current
# platform being built.
if(WIN)
set(PLATFORM_BROWSER_CODE
./browser/src/client_win.cc
./browser/src/client_win.h
./common/utils_win.cc
./common/utils_win.h
)
elseif(MAC)
set(PLATFORM_BROWSER_CODE
./browser/src/client_mac.cc
./browser/src/client_mac.h
)
elseif(LINUX)
set(PLATFORM_BROWSER_CODE
./browser/src/client_posix.cc
./browser/src/client_posix.h
)
endif()
# Makes available the package definitions in vcpkg.
include("${PROJECT_BINARY_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake")
find_package(Protobuf CONFIG REQUIRED)
# Unit tests
enable_testing()
find_package(GTest CONFIG REQUIRED)
include(GoogleTest)
# Builds the content analysis connector agent linker library. This library
# is linked into the agent in order to listen for and process content analysis
# requests from Google Chrome.
add_library(cac_agent
./agent/include/content_analysis/sdk/analysis_agent.h
./agent/include/content_analysis/sdk/result_codes.h
./agent/src/agent_base.cc
./agent/src/agent_base.h
./agent/src/event_base.cc
./agent/src/event_base.h
./agent/src/scoped_print_handle_base.cc
./agent/src/scoped_print_handle_base.h
${PLATFORM_AGENT_CODE}
${PROJECT_BINARY_DIR}/gen/content_analysis/sdk/analysis.pb.cc
)
target_link_libraries(cac_agent
PUBLIC
protobuf::libprotoc
protobuf::libprotobuf
protobuf::libprotobuf-lite)
target_include_directories(cac_agent PRIVATE ${AGENT_INCLUDES})
# Builds the content analysis connector browser linker library. This library
# is linked into the client in order to send content analysis requests to the
# agent.
add_library(cac_browser
./browser/include/content_analysis/sdk/analysis_client.h
./browser/src/client_base.cc
./browser/src/client_base.h
${PLATFORM_BROWSER_CODE}
${PROJECT_BINARY_DIR}/gen/content_analysis/sdk/analysis.pb.cc
)
target_include_directories(cac_browser PRIVATE ${BROWSER_INCLUDES})
target_link_libraries(cac_browser
PUBLIC
protobuf::libprotoc
protobuf::libprotobuf
protobuf::libprotobuf-lite)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.