Sync with 2a999a999d8a942847fceb056b203dcf3918cbf2 (#162)
This commit is contained in:
Родитель
ce2b8a0800
Коммит
d17cbd96ed
|
@ -0,0 +1,74 @@
|
|||
//*********************************************************
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// This code is licensed under the MIT License.
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||
// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
// PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
//
|
||||
//*********************************************************
|
||||
#ifndef __WIL_CPPWINRT_WRL_INCLUDED
|
||||
#define __WIL_CPPWINRT_WRL_INCLUDED
|
||||
|
||||
#include "cppwinrt.h"
|
||||
#include <winrt\base.h>
|
||||
|
||||
#include "result_macros.h"
|
||||
#include <wrl\module.h>
|
||||
|
||||
// wil::wrl_factory_for_winrt_com_class provides interopability between a
|
||||
// C++/WinRT class and the WRL Module system, allowing the winrt class to be
|
||||
// CoCreatable.
|
||||
//
|
||||
// Usage:
|
||||
// - In your cpp, add:
|
||||
// CoCreatableCppWinRtClass(className)
|
||||
//
|
||||
// - In the dll.cpp (or equivalent) for the module containing your class, add:
|
||||
// CoCreatableClassWrlCreatorMapInclude(className)
|
||||
//
|
||||
namespace wil
|
||||
{
|
||||
namespace details
|
||||
{
|
||||
template <typename TCppWinRTClass>
|
||||
class module_count_wrapper : public TCppWinRTClass
|
||||
{
|
||||
public:
|
||||
module_count_wrapper()
|
||||
{
|
||||
if (auto modulePtr = ::Microsoft::WRL::GetModuleBase())
|
||||
{
|
||||
modulePtr->IncrementObjectCount();
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~module_count_wrapper()
|
||||
{
|
||||
if (auto modulePtr = ::Microsoft::WRL::GetModuleBase())
|
||||
{
|
||||
modulePtr->DecrementObjectCount();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
template <typename TCppWinRTClass>
|
||||
class wrl_factory_for_winrt_com_class : public ::Microsoft::WRL::ClassFactory<>
|
||||
{
|
||||
public:
|
||||
IFACEMETHODIMP CreateInstance(_In_opt_ ::IUnknown* unknownOuter, REFIID riid, _COM_Outptr_ void **object) noexcept try
|
||||
{
|
||||
*object = nullptr;
|
||||
RETURN_HR_IF(CLASS_E_NOAGGREGATION, unknownOuter != nullptr);
|
||||
|
||||
return winrt::make<details::module_count_wrapper<TCppWinRTClass>>().as(riid, object);
|
||||
}
|
||||
CATCH_RETURN()
|
||||
};
|
||||
}
|
||||
|
||||
#define CoCreatableCppWinRtClass(className) CoCreatableClassWithFactory(className, ::wil::wrl_factory_for_winrt_com_class<className>)
|
||||
|
||||
#endif // __WIL_CPPWINRT_WRL_INCLUDED
|
|
@ -6228,6 +6228,48 @@ namespace wil
|
|||
|
||||
#endif // __WIL_RESOURCE_ZWAPI
|
||||
|
||||
#if defined(WINTRUST_H) && defined(SOFTPUB_H) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIL_WINTRUST)
|
||||
#define __WIL_WINTRUST
|
||||
namespace details
|
||||
{
|
||||
inline void __stdcall CloseWintrustData(_Inout_ WINTRUST_DATA* wtData) WI_NOEXCEPT
|
||||
{
|
||||
GUID guidV2 = WINTRUST_ACTION_GENERIC_VERIFY_V2;
|
||||
wtData->dwStateAction = WTD_STATEACTION_CLOSE;
|
||||
WinVerifyTrust(static_cast<HWND>(INVALID_HANDLE_VALUE), &guidV2, wtData);
|
||||
}
|
||||
}
|
||||
typedef wil::unique_struct<WINTRUST_DATA, decltype(&details::CloseWintrustData), details::CloseWintrustData> unique_wintrust_data;
|
||||
#endif // __WIL_WINTRUST
|
||||
|
||||
#if defined(MSCAT_H) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIL_MSCAT)
|
||||
#define __WIL_MSCAT
|
||||
namespace details
|
||||
{
|
||||
inline void __stdcall CryptCATAdminReleaseContextNoFlags(_Pre_opt_valid_ _Frees_ptr_opt_ HCATADMIN handle) WI_NOEXCEPT
|
||||
{
|
||||
CryptCATAdminReleaseContext(handle, 0);
|
||||
}
|
||||
}
|
||||
typedef wil::unique_any<HCATADMIN, decltype(&details::CryptCATAdminReleaseContextNoFlags), details::CryptCATAdminReleaseContextNoFlags> unique_hcatadmin;
|
||||
|
||||
#if defined(WIL_RESOURCE_STL)
|
||||
typedef shared_any<unique_hcatadmin> shared_hcatadmin;
|
||||
struct hcatinfo_deleter
|
||||
{
|
||||
hcatinfo_deleter(wil::shared_hcatadmin handle) WI_NOEXCEPT : m_hCatAdmin(wistd::move(handle)) {}
|
||||
void operator()(_Pre_opt_valid_ _Frees_ptr_opt_ HCATINFO handle) WI_NOEXCEPT
|
||||
{
|
||||
CryptCATAdminReleaseCatalogContext(m_hCatAdmin.get(), handle, 0);
|
||||
}
|
||||
wil::shared_hcatadmin m_hCatAdmin;
|
||||
};
|
||||
// This stores HCATINFO, i.e. HANDLE (void *)
|
||||
typedef wistd::unique_ptr<void, hcatinfo_deleter> unique_hcatinfo;
|
||||
#endif
|
||||
|
||||
#endif // __WIL_MSCAT
|
||||
|
||||
} // namespace wil
|
||||
|
||||
#pragma warning(pop)
|
||||
|
|
|
@ -1330,9 +1330,23 @@ namespace details
|
|||
HRESULT hr = S_OK;
|
||||
if (status != ABI::Windows::Foundation::AsyncStatus::Completed) // avoid a potentially costly marshaled QI / call if we completed successfully
|
||||
{
|
||||
// QI to the IAsyncInfo interface. While all operations implement this, it is
|
||||
// possible that the stub has disconnected, causing the QI to fail.
|
||||
ComPtr<ABI::Windows::Foundation::IAsyncInfo> asyncInfo;
|
||||
operation->QueryInterface(IID_PPV_ARGS(&asyncInfo)); // All must implement IAsyncInfo
|
||||
asyncInfo->get_ErrorCode(&hr);
|
||||
hr = operation->QueryInterface(IID_PPV_ARGS(&asyncInfo));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Save the error code result in a temporary variable to allow us
|
||||
// to also retrieve the result of the COM call. If the stub has
|
||||
// disconnected, this call may fail.
|
||||
HRESULT errorCode = E_UNEXPECTED;
|
||||
hr = asyncInfo->get_ErrorCode(&errorCode);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Return the operations error code to the caller.
|
||||
hr = errorCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CallAndHandleErrors(func, hr);
|
||||
|
@ -1355,16 +1369,30 @@ namespace details
|
|||
typename details::MapToSmartType<typename GetAbiType<typename wistd::remove_pointer<TIOperation>::type::TResult_complex>::type>::type result;
|
||||
|
||||
HRESULT hr = S_OK;
|
||||
// avoid a potentially costly marshaled QI / call if we completed successfully
|
||||
if (status == ABI::Windows::Foundation::AsyncStatus::Completed)
|
||||
{
|
||||
hr = operation->GetResults(result.GetAddressOf());
|
||||
}
|
||||
else
|
||||
{
|
||||
// avoid a potentially costly marshaled QI / call if we completed successfully
|
||||
// QI to the IAsyncInfo interface. While all operations implement this, it is
|
||||
// possible that the stub has disconnected, causing the QI to fail.
|
||||
ComPtr<ABI::Windows::Foundation::IAsyncInfo> asyncInfo;
|
||||
operation->QueryInterface(IID_PPV_ARGS(&asyncInfo)); // all must implement this
|
||||
asyncInfo->get_ErrorCode(&hr);
|
||||
hr = operation->QueryInterface(IID_PPV_ARGS(&asyncInfo));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Save the error code result in a temporary variable to allow us
|
||||
// to also retrieve the result of the COM call. If the stub has
|
||||
// disconnected, this call may fail.
|
||||
HRESULT errorCode = E_UNEXPECTED;
|
||||
hr = asyncInfo->get_ErrorCode(&errorCode);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Return the operations error code to the caller.
|
||||
hr = errorCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CallAndHandleErrors(func, hr, result.Get());
|
||||
|
@ -1431,10 +1459,23 @@ namespace details
|
|||
|
||||
if (completedDelegate->GetStatus() != ABI::Windows::Foundation::AsyncStatus::Completed)
|
||||
{
|
||||
// QI to the IAsyncInfo interface. While all operations implement this, it is
|
||||
// possible that the stub has disconnected, causing the QI to fail.
|
||||
Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IAsyncInfo> asyncInfo;
|
||||
operation->QueryInterface(IID_PPV_ARGS(&asyncInfo)); // all must implement this
|
||||
hr = E_UNEXPECTED;
|
||||
asyncInfo->get_ErrorCode(&hr); // error return ignored, ok?
|
||||
hr = operation->QueryInterface(IID_PPV_ARGS(&asyncInfo));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Save the error code result in a temporary variable to allow us
|
||||
// to also retrieve the result of the COM call. If the stub has
|
||||
// disconnected, this call may fail.
|
||||
HRESULT errorCode = E_UNEXPECTED;
|
||||
hr = asyncInfo->get_ErrorCode(&errorCode);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Return the operations error code to the caller.
|
||||
hr = errorCode;
|
||||
}
|
||||
}
|
||||
return hr; // leave it to the caller to log failures.
|
||||
}
|
||||
return S_OK;
|
||||
|
|
|
@ -175,6 +175,8 @@ goto :init
|
|||
|
||||
if %FAST_BUILD%==1 set CMAKE_ARGS=%CMAKE_ARGS% -DFAST_BUILD=ON
|
||||
|
||||
set CMAKE_ARGS=%CMAKE_ARGS% -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||
|
||||
:: Figure out the platform
|
||||
if "%Platform%"=="" echo ERROR: The init.cmd script must be run from a Visual Studio command window & exit /B 1
|
||||
if "%Platform%"=="x86" (
|
||||
|
|
|
@ -13,6 +13,20 @@ if (${FAST_BUILD})
|
|||
add_definitions(-DCATCH_CONFIG_FAST_COMPILE -DWIL_FAST_BUILD)
|
||||
endif()
|
||||
|
||||
set(COMMON_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/SafeCastTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/wiTest.cpp
|
||||
)
|
||||
|
||||
add_subdirectory(app)
|
||||
add_subdirectory(cpplatest)
|
||||
add_subdirectory(noexcept)
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
|
||||
#include <Windows.h>
|
||||
#include <wincrypt.h>
|
||||
#include <mscat.h>
|
||||
#include <softpub.h>
|
||||
|
||||
#include <memory>
|
||||
#include <wintrust.h>
|
||||
|
||||
#include <wil/resource.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#pragma comment(lib, "Wintrust.lib")
|
||||
|
||||
TEST_CASE("WilWintrustWrapperTest::VerifyWintrustDataAllocateAndFree", "[resource][wintrust]")
|
||||
{
|
||||
wil::unique_wintrust_data uwvtData;
|
||||
uwvtData.cbStruct = sizeof(WINTRUST_DATA);
|
||||
DWORD zero = 0;
|
||||
REQUIRE(sizeof(WINTRUST_DATA) == uwvtData.cbStruct);
|
||||
|
||||
uwvtData.reset();
|
||||
REQUIRE(zero == uwvtData.cbStruct);
|
||||
}
|
||||
|
||||
TEST_CASE("WilWintrustWrapperTest::VerifyUniqueHCATADMINAllocateAndFree", "[resource][wintrust]")
|
||||
{
|
||||
wil::unique_hcatadmin hCatAdmin;
|
||||
|
||||
REQUIRE(
|
||||
CryptCATAdminAcquireContext2(
|
||||
hCatAdmin.addressof(),
|
||||
NULL,
|
||||
BCRYPT_SHA256_ALGORITHM,
|
||||
NULL,
|
||||
0));
|
||||
|
||||
REQUIRE(hCatAdmin.get() != nullptr);
|
||||
hCatAdmin.reset();
|
||||
REQUIRE(hCatAdmin.get() == nullptr);
|
||||
}
|
||||
|
||||
#ifdef WIL_ENABLE_EXCEPTIONS
|
||||
TEST_CASE("WilWintrustWrapperTest::VerifyUnqiueHCATINFOAllocate", "[resource][wintrust]")
|
||||
{
|
||||
wil::shared_hcatadmin hCatAdmin;
|
||||
HCATINFO hCatInfo = nullptr;
|
||||
|
||||
REQUIRE(
|
||||
CryptCATAdminAcquireContext2(
|
||||
hCatAdmin.addressof(),
|
||||
NULL,
|
||||
BCRYPT_SHA256_ALGORITHM,
|
||||
NULL,
|
||||
0));
|
||||
|
||||
wil::unique_hcatinfo hCatInfoWrapper(hCatInfo, hCatAdmin);
|
||||
REQUIRE(hCatInfoWrapper.get() == nullptr);
|
||||
}
|
||||
#endif
|
|
@ -5,18 +5,8 @@ add_executable(witest.app)
|
|||
add_definitions(-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP)
|
||||
|
||||
target_sources(witest.app PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../SafeCastTests.cpp
|
||||
${COMMON_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../StlTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../UniqueWinRTEventTokenTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinRTTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../wiTest.cpp
|
||||
)
|
||||
|
|
|
@ -18,21 +18,12 @@ if ("${WIL_WINDOWS_SDK_VERSION}" VERSION_GREATER_EQUAL "10.0.18878.0")
|
|||
endif()
|
||||
|
||||
target_sources(witest.cpplatest PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../main.cpp
|
||||
${COMMON_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CppWinRTTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../SafeCastTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../StlTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../TokenHelpersTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../UniqueWinRTEventTokenTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WatcherTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinRTTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../wiTest.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinVerifyTrustTest.cpp
|
||||
)
|
||||
|
|
|
@ -11,18 +11,10 @@ add_definitions(-DCATCH_CONFIG_DISABLE_EXCEPTIONS)
|
|||
append_cxx_flag("/wd4530")
|
||||
|
||||
target_sources(witest.noexcept PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../SafeCastTests.cpp
|
||||
${COMMON_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../TokenHelpersTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../UniqueWinRTEventTokenTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WatcherTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinRTTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../wiTest.cpp)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinVerifyTrustTest.cpp
|
||||
)
|
||||
|
|
|
@ -3,20 +3,11 @@ project(witest)
|
|||
add_executable(witest)
|
||||
|
||||
target_sources(witest PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../SafeCastTests.cpp
|
||||
${COMMON_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../StlTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../TokenHelpersTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../UniqueWinRTEventTokenTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WatcherTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinRTTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../wiTest.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WinVerifyTrustTest.cpp
|
||||
)
|
||||
|
|
|
@ -5,18 +5,8 @@ add_executable(witest.win7)
|
|||
add_definitions("-D_WIN32_WINNT=0x0601")
|
||||
|
||||
target_sources(witest.win7 PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../main.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../CommonTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ComTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../FileSystemTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../NTResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResourceTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../ResultTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../Rpc.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../SafeCastTests.cpp
|
||||
${COMMON_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../StlTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../TokenHelpersTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WatcherTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../WistdTests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../wiTest.cpp
|
||||
)
|
||||
|
|
Загрузка…
Ссылка в новой задаче