diff options
| author | Stefan Boberg <[email protected]> | 2021-05-20 14:22:06 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-05-20 14:22:06 +0200 |
| commit | 1cf2d9c75615b5fcbcfa98c85330ed1ff5c13868 (patch) | |
| tree | e56530cf1f7d7816aa4f7c308ce1720522eace80 | |
| parent | Attempt at fixing github diff view for 4-space tabs (diff) | |
| parent | Merged from master (diff) | |
| download | zen-1cf2d9c75615b5fcbcfa98c85330ed1ff5c13868.tar.xz zen-1cf2d9c75615b5fcbcfa98c85330ed1ff5c13868.zip | |
Merge branch 'main' of https://github.com/EpicGames/zen
| -rw-r--r-- | README.md | 14 | ||||
| -rw-r--r-- | scripts/installdeps.bat | 2 | ||||
| -rw-r--r-- | vcpkg_overlay-ports/asio/CMakeLists.txt | 28 | ||||
| -rw-r--r-- | vcpkg_overlay-ports/asio/asio-config.cmake | 6 | ||||
| -rw-r--r-- | vcpkg_overlay-ports/asio/portfile.cmake | 31 | ||||
| -rw-r--r-- | vcpkg_overlay-ports/asio/vcpkg.json | 27 | ||||
| -rw-r--r-- | zen/zen.vcxproj | 2 | ||||
| -rw-r--r-- | zencore-test/zencore-test.vcxproj | 2 | ||||
| -rw-r--r-- | zencore/httpserver.cpp | 48 | ||||
| -rw-r--r-- | zencore/include/zencore/httpserver.h | 15 | ||||
| -rw-r--r-- | zencore/include/zencore/string.h | 15 | ||||
| -rw-r--r-- | zencore/zencore.vcxproj | 2 | ||||
| -rw-r--r-- | zenserver-test/zenserver-test.vcxproj | 2 | ||||
| -rw-r--r-- | zenserver/upstream/jupiter.cpp | 22 | ||||
| -rw-r--r-- | zenserver/upstream/jupiter.h | 12 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj | 2 | ||||
| -rw-r--r-- | zenstore/zenstore.vcxproj | 2 | ||||
| -rw-r--r-- | zentest-appstub/zentest-appstub.vcxproj | 7 | ||||
| -rw-r--r-- | zentestutil/zentestutil.vcxproj | 2 |
19 files changed, 225 insertions, 16 deletions
@@ -8,6 +8,8 @@ which has decayed, hopefully it can be revisited at some point. ## Setup +We currently only support building and running the server on Windows. Linux and Mac will be supported before UE5 release + To build the code you will need Visual Studio 2019 (we use c++20 features), git and vcpkg. * Install Visual Studio 2019 Version 16.9.4 or later (16.10 is recommended as it contains improvements to debug codegen which have a pretty significant impact when iterating in debug mode) @@ -18,9 +20,9 @@ basis and requires manual bootstrap so you will need to do the following at leas * open up a command line window * create a `git`/`github` directory somewhere for you to clone repos into - * issue `git clone https://github.com/bionicbeagle/vcpkg.git` and build it using the `bootstrap-vcpkg.bat` script. This git repo is temporary and will change in the future but it should be an easy upgrade when the time comes + * issue `git clone https://github.com/microsoft/vcpkg.git` and build it using the `bootstrap-vcpkg.bat` script * optional: add the `vcpkg` directory you cloned to your PATH to allow invoking vcpkg on the command line -* issue `vcpkg integrate install` +* issue `vcpkg integrate install` to make sure you can build from Visual Studio using package manifests Now you are ready to start building! @@ -46,6 +48,14 @@ Now you are ready to start building! will be tightened up in the future to require some degree of authentication to satisfy security requirements +# Contributing Code + +We rely on clang-format for consistent code formatting. You can install version 12 or later from https://llvm.org/builds/ + +The helper scripts also depend on Python 3.x, which you may install from https://www.python.org/downloads/windows/ + +Once you have those dependencies, you can simply run `prepare_commit.bat` to ensure the code is properly formatted and has the Epic copyright header comment + # Testing * There are some test projects diff --git a/scripts/installdeps.bat b/scripts/installdeps.bat index dab9c2c67..f8ec42608 100644 --- a/scripts/installdeps.bat +++ b/scripts/installdeps.bat @@ -1 +1 @@ -vcpkg --x-manifest-root=%~dp0.. --triplet=x64-windows-static install +vcpkg --x-manifest-root=%~dp0.. --overlay-ports=%~dp0..\vcpkg_overlay-ports --triplet=x64-windows-static install
\ No newline at end of file diff --git a/vcpkg_overlay-ports/asio/CMakeLists.txt b/vcpkg_overlay-ports/asio/CMakeLists.txt new file mode 100644 index 000000000..6bdb490ba --- /dev/null +++ b/vcpkg_overlay-ports/asio/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.8) +project(asio) + +add_library(asio INTERFACE) + +# Export target +install(TARGETS asio + EXPORT asio + INCLUDES DESTINATION include/ +) + +install(EXPORT asio + DESTINATION "share/asio" + FILE asio-targets.cmake +) + +install(DIRECTORY + asio/include/asio + DESTINATION include/ + FILES_MATCHING + PATTERN "*.hpp" + PATTERN "*.ipp" +) + +install(FILES + asio/include/asio.hpp + DESTINATION include/ +) diff --git a/vcpkg_overlay-ports/asio/asio-config.cmake b/vcpkg_overlay-ports/asio/asio-config.cmake new file mode 100644 index 000000000..6e5325003 --- /dev/null +++ b/vcpkg_overlay-ports/asio/asio-config.cmake @@ -0,0 +1,6 @@ +include ("${CMAKE_CURRENT_LIST_DIR}/asio-targets.cmake") +add_library(asio::asio INTERFACE IMPORTED) +target_link_libraries(asio::asio INTERFACE asio) + +get_target_property(_ASIO_INCLUDE_DIR asio INTERFACE_INCLUDE_DIRECTORIES) +set(ASIO_INCLUDE_DIR "${_ASIO_INCLUDE_DIR}") diff --git a/vcpkg_overlay-ports/asio/portfile.cmake b/vcpkg_overlay-ports/asio/portfile.cmake new file mode 100644 index 000000000..08cf98e24 --- /dev/null +++ b/vcpkg_overlay-ports/asio/portfile.cmake @@ -0,0 +1,31 @@ +#header-only library + +vcpkg_from_git( + OUT_SOURCE_PATH SOURCE_PATH + URL https://github.com/chriskohlhoff/asio.git + REPO chriskohlhoff/asio + REF 57577c6db46a4e2de5351af2b185bf52696699a9 + HEAD_REF master +) + +# Always use "ASIO_STANDALONE" to avoid boost dependency +vcpkg_replace_string("${SOURCE_PATH}/asio/include/asio/detail/config.hpp" "defined(ASIO_STANDALONE)" "!defined(VCPKG_DISABLE_ASIO_STANDALONE)") + +# CMake install +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets(CONFIG_PATH "share/asio") +file(INSTALL + ${CMAKE_CURRENT_LIST_DIR}/asio-config.cmake + DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} +) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug) + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/asio/LICENSE_1_0.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + diff --git a/vcpkg_overlay-ports/asio/vcpkg.json b/vcpkg_overlay-ports/asio/vcpkg.json new file mode 100644 index 000000000..38140acc5 --- /dev/null +++ b/vcpkg_overlay-ports/asio/vcpkg.json @@ -0,0 +1,27 @@ +{ + "name": "asio", + "version": "1.18.1", + "description": "Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.", + "homepage": "https://github.com/chriskohlhoff/asio", + "documentation": "https://think-async.com/Asio/asio-1.18.0/doc/", + "features": { + "coroutine": { + "description": "Boost.Coroutine (optional) if you use spawn() to launch coroutines", + "dependencies": [ + "boost-coroutine" + ] + }, + "openssl": { + "description": "OpenSSL (optional) if you use Asio's SSL support.", + "dependencies": [ + "openssl" + ] + }, + "regex": { + "description": "Boost.Regex (optional) if you use any of the read_until() or async_read_until() overloads that take a boost::regex parameter.", + "dependencies": [ + "boost-regex" + ] + } + } +} diff --git a/zen/zen.vcxproj b/zen/zen.vcxproj index 2614405d7..06c08e49f 100644 --- a/zen/zen.vcxproj +++ b/zen/zen.vcxproj @@ -56,10 +56,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> diff --git a/zencore-test/zencore-test.vcxproj b/zencore-test/zencore-test.vcxproj index 77a4397fe..42e373ab6 100644 --- a/zencore-test/zencore-test.vcxproj +++ b/zencore-test/zencore-test.vcxproj @@ -54,10 +54,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> diff --git a/zencore/httpserver.cpp b/zencore/httpserver.cpp index 22cba4d75..1bfe224f8 100644 --- a/zencore/httpserver.cpp +++ b/zencore/httpserver.cpp @@ -929,6 +929,46 @@ HttpSysServer::RemoveEndpoint(const char* UrlPath, HttpService& Service) ////////////////////////////////////////////////////////////////////////// +using namespace std::literals; + +static constinit uint32_t HashBinary = HashStringDjb2("application/octet-stream"sv); +static constinit uint32_t HashJson = HashStringDjb2("application/json"sv); +static constinit uint32_t HashText = HashStringDjb2("text/plain"sv); +static constinit uint32_t HashCompactBinary = HashStringDjb2("application/x-ue-cb"sv); +static constinit uint32_t HashCompactBinaryPackage = HashStringDjb2("application/x-ue-cbpkg"sv); + +HttpContentType +MapContentType(const std::string_view& ContentTypeString) +{ + if (!ContentTypeString.empty()) + { + const uint32_t CtHash = HashStringDjb2(ContentTypeString); + + if (CtHash == HashBinary) + { + return HttpContentType::kBinary; + } + else if (CtHash == HashCompactBinary) + { + return HttpContentType::kCbObject; + } + else if (CtHash == HashCompactBinaryPackage) + { + return HttpContentType::kCbPackage; + } + else if (CtHash == HashJson) + { + return HttpContentType::kJSON; + } + else if (CtHash == HashText) + { + return HttpContentType::kText; + } + } + + return HttpContentType::kUnknownContentType; +} + class HttpSysServerRequest : public HttpServerRequest { public: @@ -1000,10 +1040,12 @@ public: break; } - auto& clh = HttpRequestPtr->Headers.KnownHeaders[HttpHeaderContentLength]; - std::string_view cl(clh.pRawValue, clh.RawValueLength); - + const HTTP_KNOWN_HEADER& clh = HttpRequestPtr->Headers.KnownHeaders[HttpHeaderContentLength]; + std::string_view cl(clh.pRawValue, clh.RawValueLength); std::from_chars(cl.data(), cl.data() + cl.size(), m_ContentLength); + + const HTTP_KNOWN_HEADER& CtHdr = HttpRequestPtr->Headers.KnownHeaders[HttpHeaderContentType]; + m_ContentType = MapContentType({CtHdr.pRawValue, CtHdr.RawValueLength}); } ~HttpSysServerRequest() {} diff --git a/zencore/include/zencore/httpserver.h b/zencore/include/zencore/httpserver.h index d07eba339..8f762c2e4 100644 --- a/zencore/include/zencore/httpserver.h +++ b/zencore/include/zencore/httpserver.h @@ -167,7 +167,8 @@ enum class HttpContentType kText, kJSON, kCbObject, - kCbPackage + kCbPackage, + kUnknownContentType }; /** HTTP Server Request @@ -209,7 +210,8 @@ public: QueryParams GetQueryParams(); - inline HttpVerb RequestVerb() const { return m_Verb; } + inline HttpVerb RequestVerb() const { return m_Verb; } + inline HttpContentType RequestContentType() { return m_ContentType; } const char* HeaderAccept() const; const char* HeaderAcceptEncoding() const; @@ -248,6 +250,7 @@ protected: bool m_SuppressBody = false; HttpVerb m_Verb = HttpVerb::kGet; uint64_t m_ContentLength = ~0ull; + HttpContentType m_ContentType = HttpContentType::kBinary; ExtendableStringBuilder<256> m_Uri; ExtendableStringBuilder<256> m_QueryString; }; @@ -263,9 +266,9 @@ private: /** * Base class for implementing an HTTP "service" - * + * * A service exposes one or more endpoints with a certain URI prefix - * + * */ class HttpService @@ -340,10 +343,10 @@ HttpRouterRequest::GetCapture(int Index) const ////////////////////////////////////////////////////////////////////////// /** HTTP request router helper - * + * * This helper class allows a service implementer to register one or more * endpoints using pattern matching (currently using regex matching) - * + * */ class HttpRequestRouter diff --git a/zencore/include/zencore/string.h b/zencore/include/zencore/string.h index d7727ca08..684e27827 100644 --- a/zencore/include/zencore/string.h +++ b/zencore/include/zencore/string.h @@ -590,6 +590,21 @@ ParseInt(const std::string_view& Input) ////////////////////////////////////////////////////////////////////////// +constexpr uint32_t +HashStringDjb2(const std::string_view& InString) +{ + uint32_t HashValue = 5381; + + for (int c : InString) + { + HashValue = HashValue * 33 + c; + } + + return HashValue; +} + +////////////////////////////////////////////////////////////////////////// + void string_forcelink(); // internal } // namespace zen diff --git a/zencore/zencore.vcxproj b/zencore/zencore.vcxproj index c68e922c5..c9d51e0bb 100644 --- a/zencore/zencore.vcxproj +++ b/zencore/zencore.vcxproj @@ -58,10 +58,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> diff --git a/zenserver-test/zenserver-test.vcxproj b/zenserver-test/zenserver-test.vcxproj index 8cf7df84d..3d5a37ac8 100644 --- a/zenserver-test/zenserver-test.vcxproj +++ b/zenserver-test/zenserver-test.vcxproj @@ -58,10 +58,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> diff --git a/zenserver/upstream/jupiter.cpp b/zenserver/upstream/jupiter.cpp index 523ee61f4..1078e5240 100644 --- a/zenserver/upstream/jupiter.cpp +++ b/zenserver/upstream/jupiter.cpp @@ -150,6 +150,28 @@ CloudCacheSession::Filter(std::string_view BucketId, const std::vector<IoHash>& ////////////////////////////////////////////////////////////////////////// +IoBuffer +CloudCacheSession::Get(std::string_view BucketId, const IoHash& Key) +{ + StringBuilder<64> KeyString; + Key.ToHexString(KeyString); + + return Get(BucketId, KeyString); +} + +void +CloudCacheSession::Put(std::string_view BucketId, const IoHash& Key, IoBuffer Data, HttpContentType ContentType) +{ + ZEN_UNUSED(ContentType); + + StringBuilder<64> KeyString; + Key.ToHexString(KeyString); + + return Put(BucketId, KeyString, Data); +} + +////////////////////////////////////////////////////////////////////////// + std::string CloudCacheAccessToken::GetAuthorizationHeaderValue() { diff --git a/zenserver/upstream/jupiter.h b/zenserver/upstream/jupiter.h index 5bcec2904..2f01b7afb 100644 --- a/zenserver/upstream/jupiter.h +++ b/zenserver/upstream/jupiter.h @@ -2,6 +2,7 @@ #pragma once +#include <zencore/httpserver.h> #include <zencore/refcount.h> #include <zencore/thread.h> @@ -49,9 +50,14 @@ public: CloudCacheSession(CloudCacheClient* OuterClient); ~CloudCacheSession(); - IoBuffer Get(std::string_view BucketId, std::string_view Key); - void Put(std::string_view BucketId, std::string_view Key, IoBuffer Data); - void Put(std::string_view BucketId, std::string_view Key, CbObjectView Data); + // Key-value cache operations + IoBuffer Get(std::string_view BucketId, std::string_view Key); + void Put(std::string_view BucketId, std::string_view Key, IoBuffer Data); + + // Structured cache operations + IoBuffer Get(std::string_view BucketId, const IoHash& Key); + void Put(std::string_view BucketId, const IoHash& Key, IoBuffer Data, HttpContentType ContentType); + std::vector<IoHash> Filter(std::string_view BucketId, const std::vector<IoHash>& ChunkHashes); private: diff --git a/zenserver/zenserver.vcxproj b/zenserver/zenserver.vcxproj index b47ec2f04..2ba6bd551 100644 --- a/zenserver/zenserver.vcxproj +++ b/zenserver/zenserver.vcxproj @@ -58,10 +58,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ClCompile> diff --git a/zenstore/zenstore.vcxproj b/zenstore/zenstore.vcxproj index 4a39e826d..06cb9db32 100644 --- a/zenstore/zenstore.vcxproj +++ b/zenstore/zenstore.vcxproj @@ -77,10 +77,12 @@ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgEnableManifest>true</VcpkgEnableManifest> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> diff --git a/zentest-appstub/zentest-appstub.vcxproj b/zentest-appstub/zentest-appstub.vcxproj index cf8fd3c5e..efbe86b47 100644 --- a/zentest-appstub/zentest-appstub.vcxproj +++ b/zentest-appstub/zentest-appstub.vcxproj @@ -82,7 +82,12 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <LinkIncremental>false</LinkIncremental> </PropertyGroup> - <PropertyGroup Label="Vcpkg" /> + <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> + </PropertyGroup> + <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> + </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> <WarningLevel>Level3</WarningLevel> diff --git a/zentestutil/zentestutil.vcxproj b/zentestutil/zentestutil.vcxproj index 8213763fc..cf8b02dc1 100644 --- a/zentestutil/zentestutil.vcxproj +++ b/zentestutil/zentestutil.vcxproj @@ -58,9 +58,11 @@ </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <VcpkgUseStatic>true</VcpkgUseStatic> + <VcpkgAdditionalInstallOptions>--overlay-ports=$(SolutionDir)vcpkg_overlay-ports</VcpkgAdditionalInstallOptions> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> |