[chore] Convert solution to CMake
[fix] Server to make it work with boost 1.77
This commit is contained in:
parent
05ff013204
commit
f032657e33
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@
|
|||||||
/CCEngine/CCEngine.aps
|
/CCEngine/CCEngine.aps
|
||||||
/CCEngine/build/
|
/CCEngine/build/
|
||||||
/CCEngineLoader/build/
|
/CCEngineLoader/build/
|
||||||
|
/out/
|
||||||
|
|||||||
49
CCEngine.sln
49
CCEngine.sln
@ -1,49 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio 15
|
|
||||||
VisualStudioVersion = 15.0.27130.2036
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CCEngine", "CCEngine\CCEngine.vcxproj", "{51637EB3-9942-43AE-9272-9DD85412EFC7}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libLicenseClient", "..\libLicenseClient\libLicenseClient.vcxproj", "{51345E59-83E5-4389-93A9-0131B40522B7}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libLicenseClientTest", "..\libLicenseClient\test\libLicenseClientTest.vcxproj", "{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{44063F88-E25A-4C9D-AC11-9868D4CDD704}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CCEngineLoader", "CCEngineLoader\CCEngineLoader.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{51637EB3-9942-43AE-9272-9DD85412EFC7}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{51637EB3-9942-43AE-9272-9DD85412EFC7}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{51637EB3-9942-43AE-9272-9DD85412EFC7}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{51637EB3-9942-43AE-9272-9DD85412EFC7}.Release|x86.Build.0 = Release|Win32
|
|
||||||
{51345E59-83E5-4389-93A9-0131B40522B7}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{51345E59-83E5-4389-93A9-0131B40522B7}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{51345E59-83E5-4389-93A9-0131B40522B7}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{51345E59-83E5-4389-93A9-0131B40522B7}.Release|x86.Build.0 = Release|Win32
|
|
||||||
{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73}.Release|x86.Build.0 = Release|Win32
|
|
||||||
{B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x86.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{E781AE2E-4A02-4D63-9CAC-1AEBACD9CD73} = {44063F88-E25A-4C9D-AC11-9868D4CDD704}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
Qt5Version = $(DefaultQtVersion)
|
|
||||||
SolutionGuid = {4CBA44D0-8074-48F8-A6DD-5914FE3F0026}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
@ -1,177 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{51637EB3-9942-43AE-9272-9DD85412EFC7}</ProjectGuid>
|
|
||||||
<Keyword>Qt4VSv1.0</Keyword>
|
|
||||||
<RootNamespace>CCEngine</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<PropertyGroup Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<QtMsBuild>$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
|
||||||
</Target>
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionSettings" />
|
|
||||||
<ImportGroup Label="Shared" />
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="project-common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="project-common.props" />
|
|
||||||
<Import Project="..\non-debugable.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<AdditionalDependencies>qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<IncludePath>%(AdditionalIncludeDirectories)</IncludePath>
|
|
||||||
<Define>_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</Define>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions);</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<StripPrivateSymbols>YES</StripPrivateSymbols>
|
|
||||||
<AssemblyDebug>false</AssemblyDebug>
|
|
||||||
<ProgramDatabaseFile />
|
|
||||||
<FullProgramDatabaseFile>false</FullProgramDatabaseFile>
|
|
||||||
<AdditionalDependencies>qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<Define>_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions);</Define>
|
|
||||||
<IncludePath>%(AdditionalIncludeDirectories)</IncludePath>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="src\CCEngine.cpp" />
|
|
||||||
<ClCompile Include="src\CCLicenseController.cpp" />
|
|
||||||
<ClCompile Include="src\CCServer.cpp" />
|
|
||||||
<ClCompile Include="src\CCServerManager.cpp" />
|
|
||||||
<ClCompile Include="src\main.cpp" />
|
|
||||||
<ClCompile Include="src\ProcessUtils.cpp" />
|
|
||||||
<ClCompile Include="src\RunGuard.cpp" />
|
|
||||||
<ClCompile Include="src\SingleAppGuard.cpp" />
|
|
||||||
<ClCompile Include="src\SystemParamsDlg.cpp" />
|
|
||||||
<ClCompile Include="src\SystemParamsModel.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="src\RunGuard.h" />
|
|
||||||
<QtMoc Include="src\SingleAppGuard.h">
|
|
||||||
<OutputFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</OutputFile>
|
|
||||||
<ExecutionDescription Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\..\libLicenseClient\api;.\GeneratedFiles;$(Conan-qt-Root)\include\QtWidgets;$(ProjectDir)..\..\thirdparty\SingleApplication;$(USERPROFILE)\.conan\data\libzip\1.5.1\bincrafters\stable\package\dbbcb700636ed4dcef87df041870679358161bfa\include;$(USERPROFILE)\.conan\data\libcurl\7.61.1\bincrafters\stable\package\ad2605af224ca43af0e946078f4647e97ed84168\include;C:\.conan\uahlbm22\1\include;$(USERPROFILE)\.conan\data\cryptopp\7.0.0\bincrafters\stable\package\b786e9ece960c3a76378ca4d5b0d0e922f4cedc1\include;C:\.conan\hmd9bfi9\1\include;$(USERPROFILE)\.conan\data\bzip2\1.0.6\conan\stable\package\b786e9ece960c3a76378ca4d5b0d0e922f4cedc1\include;$(USERPROFILE)\.conan\data\OpenSSL\1.0.2o\conan\stable\package\312b5f5b013b9686179e3082c71ec55f20aea297\include;$(USERPROFILE)\.conan\data\zlib\1.2.11\conan\stable\package\b786e9ece960c3a76378ca4d5b0d0e922f4cedc1\include</IncludePath>
|
|
||||||
<Define Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;_DEBUG;QAPPLICATION_CLASS=QApplication;_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;BOOST_USE_STATIC_LIBS;BOOST_ALL_NO_LIB;CURL_STATICLIB=1;_MBCS</Define>
|
|
||||||
<OutputFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</OutputFile>
|
|
||||||
<ExecutionDescription Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)..\..\libLicenseClient\api;.\GeneratedFiles;$(Conan-qt-Root)\include\QtWidgets;$(ProjectDir)..\..\thirdparty\SingleApplication;$(USERPROFILE)\.conan\data\libzip\1.5.1\bincrafters\stable\package\fc750fec580977876c697df1eba7f91b3923261b\include;$(USERPROFILE)\.conan\data\libcurl\7.61.1\bincrafters\stable\package\e37072ee7d8e70a6842093ddc8fc71f26526e91f\include;C:\.conan\4gwcmfvt\1\include;$(USERPROFILE)\.conan\data\cryptopp\7.0.0\bincrafters\stable\package\2bb76c9adac7b8cd7c5e3b377ac9f06934aba606\include;C:\.conan\btu8fxq0\1\include;$(USERPROFILE)\.conan\data\bzip2\1.0.6\conan\stable\package\2bb76c9adac7b8cd7c5e3b377ac9f06934aba606\include;$(USERPROFILE)\.conan\data\OpenSSL\1.0.2o\conan\stable\package\b02659d133a8131c5433777813f6385a05a7ae8a\include;$(USERPROFILE)\.conan\data\zlib\1.2.11\conan\stable\package\2bb76c9adac7b8cd7c5e3b377ac9f06934aba606\include</IncludePath>
|
|
||||||
<Define Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_WIN32_WINNT=0x0601;WIN32;_SCL_SECURE_NO_WARNINGS;NDEBUG;QAPPLICATION_CLASS=QApplication;_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;BOOST_USE_STATIC_LIBS;BOOST_ALL_NO_LIB;CURL_STATICLIB=1;_MBCS</Define>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\SystemParamsModel.h" />
|
|
||||||
<QtMoc Include="src\SystemParamsDlg.h" />
|
|
||||||
<QtMoc Include="src\CCEngine.h" />
|
|
||||||
<QtMoc Include="src\CCLicenseController.h" />
|
|
||||||
<ClInclude Include="src\CCServer.h" />
|
|
||||||
<QtMoc Include="src\CCServerManager.h" />
|
|
||||||
<ClInclude Include="src\PlatformInit.h" />
|
|
||||||
<ClInclude Include="src\ProcessUtils.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="CCEngine.ui" />
|
|
||||||
<QtUic Include="SystemParameters.ui" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="CCEngine.qrc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="CCEngine.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\libLicenseClient\libLicenseClient.vcxproj">
|
|
||||||
<Project>{51345e59-83e5-4389-93a9-0131b40522b7}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\CCEngineLoader\CCEngineLoader.vcxproj">
|
|
||||||
<Project>{b12702ad-abfb-343a-a199-8e24837244a3}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Image Include="CCEngine.ico" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.targets" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
<ProjectExtensions>
|
|
||||||
<VisualStudio>
|
|
||||||
<UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_Win32="$(DefaultQtVersion)" MocOptions="" />
|
|
||||||
</VisualStudio>
|
|
||||||
</ProjectExtensions>
|
|
||||||
</Project>
|
|
||||||
@ -1,110 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="src">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Form Files">
|
|
||||||
<UniqueIdentifier>{60322e81-4907-489e-87af-66b7f5778503}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
||||||
<ParseFiles>true</ParseFiles>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="src\CCEngine.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\CCServer.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\ProcessUtils.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\main.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\CCServerManager.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\SystemParamsDlg.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\SystemParamsModel.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\CCLicenseController.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\RunGuard.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\SingleAppGuard.cpp">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="src\CCServer.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\ProcessUtils.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\PlatformInit.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="src\RunGuard.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="CCEngine.rc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</ResourceCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="CCEngine.qrc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtRcc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="CCEngine.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="SystemParameters.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="src\CCEngine.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\CCServerManager.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\SystemParamsDlg.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\SystemParamsModel.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\CCLicenseController.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="src\SingleAppGuard.h">
|
|
||||||
<Filter>src</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Image Include="CCEngine.ico">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</Image>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
84
CCEngine/CMakeLists.txt
Normal file
84
CCEngine/CMakeLists.txt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
cmake_minimum_required (VERSION 3.8)
|
||||||
|
|
||||||
|
set(PROJECT_NAME CCEngine)
|
||||||
|
project (${PROJECT_NAME})
|
||||||
|
|
||||||
|
# Download automatically, you can also just copy the conan.cmake file
|
||||||
|
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
|
||||||
|
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
|
||||||
|
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.16.1/conan.cmake"
|
||||||
|
"${CMAKE_BINARY_DIR}/conan.cmake"
|
||||||
|
EXPECTED_HASH SHA256=396e16d0f5eabdc6a14afddbcfff62a54a7ee75c6da23f32f7a31bc85db23484
|
||||||
|
TLS_VERIFY ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_AUTOUIC_SEARCH_PATHS ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
|
set(CMAKE_PREFIX_PATH ${PROJECT_BINARY_DIR})
|
||||||
|
|
||||||
|
include(${CMAKE_BINARY_DIR}/conan.cmake)
|
||||||
|
|
||||||
|
conan_cmake_run(CONANFILE conanfile.txt
|
||||||
|
BUILD missing
|
||||||
|
BASIC_SETUP)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Source groups
|
||||||
|
################################################################################
|
||||||
|
set(resource
|
||||||
|
"CCEngine.ui"
|
||||||
|
"CCEngine.qrc"
|
||||||
|
)
|
||||||
|
source_group("resource" FILES ${resource})
|
||||||
|
|
||||||
|
set(src
|
||||||
|
"src/CCEngine.cpp"
|
||||||
|
"src/CCEngine.h"
|
||||||
|
"src/CCLicenseController.cpp"
|
||||||
|
"src/CCLicenseController.h"
|
||||||
|
"src/CCServer.cpp"
|
||||||
|
"src/CCServer.h"
|
||||||
|
"src/CCServerManager.cpp"
|
||||||
|
"src/CCServerManager.h"
|
||||||
|
"src/main.cpp"
|
||||||
|
"src/ProcessUtils.cpp"
|
||||||
|
"src/ProcessUtils.h"
|
||||||
|
"src/RunGuard.cpp"
|
||||||
|
"src/RunGuard.h"
|
||||||
|
"src/SingleAppGuard.cpp"
|
||||||
|
"src/SingleAppGuard.h"
|
||||||
|
"src/SystemParamsDlg.cpp"
|
||||||
|
"src/SystemParamsDlg.h"
|
||||||
|
"src/SystemParamsModel.cpp"
|
||||||
|
"src/SystemParamsModel.h"
|
||||||
|
"src/version.h"
|
||||||
|
)
|
||||||
|
source_group("src" FILES ${src})
|
||||||
|
|
||||||
|
set(ALL_FILES
|
||||||
|
${resource}
|
||||||
|
${src}
|
||||||
|
)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Target
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
include_directories(${libLicenseClient_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME} ${ALL_FILES})
|
||||||
|
|
||||||
|
# Find the QtWidgets library
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
|
||||||
|
find_package(Qt5 CONFIG REQUIRED COMPONENTS Core Gui Widgets)
|
||||||
|
find_package(yaml-cpp CONFIG)
|
||||||
|
find_package(boost CONFIG REQUIRED COMPONENTS log)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} libLicenseClient Qt5::Core Qt5::Gui Qt5::Widgets yaml-cpp::yaml-cpp Boost::log)
|
||||||
@ -1,29 +1,23 @@
|
|||||||
[requires]
|
[requires]
|
||||||
libzip/1.8.0
|
|
||||||
libcurl/7.78.0
|
|
||||||
boost/1.77.0
|
boost/1.77.0
|
||||||
cryptopp/8.5.0
|
|
||||||
qt/5.15.2
|
qt/5.15.2
|
||||||
yaml-cpp/0.7.0
|
yaml-cpp/0.7.0
|
||||||
|
|
||||||
[generators]
|
[generators]
|
||||||
visual_studio
|
cmake_find_package_multi
|
||||||
|
qt
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
libzip:shared=False
|
|
||||||
libcurl:shared=False
|
|
||||||
libcurl:with_openssl=False
|
|
||||||
libcurl:with_winssl=True
|
|
||||||
boost:shared=False
|
boost:shared=False
|
||||||
cryptopp:shared=False
|
|
||||||
qt:shared=True
|
qt:shared=True
|
||||||
|
yaml-cpp:shared=False
|
||||||
|
|
||||||
[imports]
|
[imports]
|
||||||
bin, Qt5Cored.dll -> ./Debug @ root_package=qt
|
bin, Qt5Cored.dll -> ./bin @ root_package=qt
|
||||||
bin, Qt5Guid.dll -> ./Debug @ root_package=qt
|
bin, Qt5Guid.dll -> ./bin @ root_package=qt
|
||||||
bin, Qt5Widgetsd.dll -> ./Debug @ root_package=qt
|
bin, Qt5Widgetsd.dll -> ./bin @ root_package=qt
|
||||||
bin, Qt5Core.dll -> ./Release @ root_package=qt
|
bin, Qt5Core.dll -> ./bin @ root_package=qt
|
||||||
bin, Qt5Gui.dll -> ./Release @ root_package=qt
|
bin, Qt5Gui.dll -> ./bin @ root_package=qt
|
||||||
bin, Qt5Widgets.dll -> ./Release @ root_package=qt
|
bin, Qt5Widgets.dll -> ./bin @ root_package=qt
|
||||||
plugins/platforms, qwindowsd.dll -> ./Debug/platforms @ root_package=qt
|
bin/archdatadir/plugins/platforms, qwindowsd.dll -> ./bin/platforms @ root_package=qt
|
||||||
plugins/platforms, qwindows.dll -> ./Release/platforms @ root_package=qt
|
bin/archdatadir/plugins/platforms, qwindows.dll -> ./bin/platforms @ root_package=qt
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="build\conanbuildinfo_multi.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)..\..\libLicenseClient\api;$(ProjectDir)GeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<PreprocessorDefinitions>_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
@ -1,15 +1,19 @@
|
|||||||
#include "CCServer.h"
|
#include "CCServer.h"
|
||||||
|
|
||||||
#include "CryptoUtils.h"
|
#include "CryptoUtils.h"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Based on Beast example: Advanced server
|
||||||
|
//
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/bind_executor.hpp>
|
#include <boost/asio/bind_executor.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/signal_set.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/asio/steady_timer.hpp>
|
|
||||||
#include <boost/config.hpp>
|
|
||||||
#include <boost/crc.hpp>
|
#include <boost/crc.hpp>
|
||||||
#include <boost/iostreams/filtering_stream.hpp>
|
#include <boost/iostreams/filtering_stream.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
@ -21,12 +25,18 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <shared_mutex>
|
#include <shared_mutex>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace fs = boost::filesystem; // from <boost/filesystem.hpp>
|
namespace fs = boost::filesystem; // from <boost/filesystem.hpp>
|
||||||
|
|
||||||
|
namespace beast = boost::beast; // from <boost/beast.hpp>
|
||||||
|
namespace http = beast::http; // from <boost/beast/http.hpp>
|
||||||
|
namespace net = boost::asio; // from <boost/asio.hpp>
|
||||||
using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp>
|
using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp>
|
||||||
namespace http = boost::beast::http; // from <boost/beast/http.hpp>
|
|
||||||
|
|
||||||
static constexpr auto APIS_UINT8_MIN = std::numeric_limits<uint8_t>::min();
|
static constexpr auto APIS_UINT8_MIN = std::numeric_limits<uint8_t>::min();
|
||||||
static constexpr auto APIS_UINT8_MAX = std::numeric_limits<uint8_t>::max();
|
static constexpr auto APIS_UINT8_MAX = std::numeric_limits<uint8_t>::max();
|
||||||
@ -169,15 +179,15 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Return a reasonable mime type based on the extension of a file.
|
// Return a reasonable mime type based on the extension of a file.
|
||||||
boost::beast::string_view
|
beast::string_view
|
||||||
mime_type(boost::beast::string_view path)
|
mime_type(beast::string_view path)
|
||||||
{
|
{
|
||||||
using boost::beast::iequals;
|
using beast::iequals;
|
||||||
auto const ext = [&path]
|
auto const ext = [&path]
|
||||||
{
|
{
|
||||||
auto const pos = path.rfind(".");
|
auto const pos = path.rfind(".");
|
||||||
if (pos == boost::beast::string_view::npos)
|
if (pos == beast::string_view::npos)
|
||||||
return boost::beast::string_view{};
|
return beast::string_view{};
|
||||||
return path.substr(pos);
|
return path.substr(pos);
|
||||||
}();
|
}();
|
||||||
if (iequals(ext, ".htm")) return "text/html";
|
if (iequals(ext, ".htm")) return "text/html";
|
||||||
@ -208,13 +218,13 @@ mime_type(boost::beast::string_view path)
|
|||||||
// The returned path is normalized for the platform.
|
// The returned path is normalized for the platform.
|
||||||
std::string
|
std::string
|
||||||
path_cat(
|
path_cat(
|
||||||
boost::beast::string_view base,
|
beast::string_view base,
|
||||||
boost::beast::string_view path)
|
beast::string_view path)
|
||||||
{
|
{
|
||||||
if (base.empty())
|
if (base.empty())
|
||||||
return path.to_string();
|
return std::string(path);
|
||||||
std::string result = base.to_string();
|
std::string result(base);
|
||||||
#if BOOST_MSVC
|
#ifdef BOOST_MSVC
|
||||||
char constexpr path_separator = '\\';
|
char constexpr path_separator = '\\';
|
||||||
if (result.back() == path_separator)
|
if (result.back() == path_separator)
|
||||||
result.resize(result.size() - 1);
|
result.resize(result.size() - 1);
|
||||||
@ -240,51 +250,51 @@ template<
|
|||||||
class Send>
|
class Send>
|
||||||
void
|
void
|
||||||
handle_request(
|
handle_request(
|
||||||
boost::beast::string_view doc_root,
|
beast::string_view doc_root,
|
||||||
etag_cache& cache,
|
etag_cache& cache,
|
||||||
http::request<Body, http::basic_fields<Allocator>>&& req,
|
http::request<Body, http::basic_fields<Allocator>>&& req,
|
||||||
Send&& send)
|
Send&& send)
|
||||||
{
|
{
|
||||||
// Returns a bad request response
|
// Returns a bad request response
|
||||||
auto const bad_request =
|
auto const bad_request =
|
||||||
[&req](boost::beast::string_view why)
|
[&req](beast::string_view why)
|
||||||
{
|
{
|
||||||
http::response<http::string_body> res{ http::status::bad_request, req.version() };
|
http::response<http::string_body> res{ http::status::bad_request, req.version() };
|
||||||
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
||||||
res.set(http::field::content_type, "text/html");
|
res.set(http::field::content_type, "text/html");
|
||||||
res.keep_alive(req.keep_alive());
|
res.keep_alive(req.keep_alive());
|
||||||
res.body() = why.to_string();
|
res.body() = std::string(why);
|
||||||
res.prepare_payload();
|
res.prepare_payload();
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Returns a not found response
|
// Returns a not found response
|
||||||
auto const not_found =
|
auto const not_found =
|
||||||
[&req](boost::beast::string_view target)
|
[&req](beast::string_view target)
|
||||||
{
|
{
|
||||||
http::response<http::string_body> res{ http::status::not_found, req.version() };
|
http::response<http::string_body> res{ http::status::not_found, req.version() };
|
||||||
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
||||||
res.set(http::field::content_type, "text/html");
|
res.set(http::field::content_type, "text/html");
|
||||||
res.keep_alive(req.keep_alive());
|
res.keep_alive(req.keep_alive());
|
||||||
res.body() = "The resource '" + target.to_string() + "' was not found.";
|
res.body() = "The resource '" + std::string(target) + "' was not found.";
|
||||||
res.prepare_payload();
|
res.prepare_payload();
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Returns a server error response
|
// Returns a server error response
|
||||||
auto const server_error =
|
auto const server_error =
|
||||||
[&req](boost::beast::string_view what)
|
[&req](beast::string_view what)
|
||||||
{
|
{
|
||||||
http::response<http::string_body> res{ http::status::internal_server_error, req.version() };
|
http::response<http::string_body> res{ http::status::internal_server_error, req.version() };
|
||||||
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
|
||||||
res.set(http::field::content_type, "text/html");
|
res.set(http::field::content_type, "text/html");
|
||||||
res.keep_alive(req.keep_alive());
|
res.keep_alive(req.keep_alive());
|
||||||
res.body() = "An error occurred: '" + what.to_string() + "'";
|
res.body() = "An error occurred: '" + std::string(what) + "'";
|
||||||
res.prepare_payload();
|
res.prepare_payload();
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Returns a server error response
|
// Returns a not modified response
|
||||||
auto const not_modified =
|
auto const not_modified =
|
||||||
[&req](boost::beast::string_view etag)
|
[&req](boost::beast::string_view etag)
|
||||||
{
|
{
|
||||||
@ -304,7 +314,7 @@ template<
|
|||||||
// Request path must be absolute and not contain "..".
|
// Request path must be absolute and not contain "..".
|
||||||
if (req.target().empty() ||
|
if (req.target().empty() ||
|
||||||
req.target()[0] != '/' ||
|
req.target()[0] != '/' ||
|
||||||
req.target().find("..") != boost::beast::string_view::npos)
|
req.target().find("..") != beast::string_view::npos)
|
||||||
return send(bad_request("Illegal request-target"));
|
return send(bad_request("Illegal request-target"));
|
||||||
|
|
||||||
auto it = req.find(http::field::if_none_match);
|
auto it = req.find(http::field::if_none_match);
|
||||||
@ -333,7 +343,7 @@ template<
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build the path to the requested file
|
// Build the path to the requested file
|
||||||
boost::beast::string_view targetPath = req.target();
|
beast::string_view targetPath = req.target();
|
||||||
auto pos = targetPath.find_first_of('?');
|
auto pos = targetPath.find_first_of('?');
|
||||||
if (pos != std::string::npos)
|
if (pos != std::string::npos)
|
||||||
{
|
{
|
||||||
@ -398,11 +408,12 @@ template<
|
|||||||
|
|
||||||
// Report a failure
|
// Report a failure
|
||||||
void
|
void
|
||||||
fail(boost::system::error_code ec, char const* what)
|
fail(beast::error_code ec, char const* what)
|
||||||
{
|
{
|
||||||
std::cerr << what << ": " << ec.message() << "\n";
|
std::cerr << what << ": " << ec.message() << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Handles an HTTP server connection
|
// Handles an HTTP server connection
|
||||||
class http_session : public std::enable_shared_from_this<http_session>
|
class http_session : public std::enable_shared_from_this<http_session>
|
||||||
{
|
{
|
||||||
@ -462,8 +473,7 @@ class http_session : public std::enable_shared_from_this<http_session>
|
|||||||
// This holds a work item
|
// This holds a work item
|
||||||
struct work_impl : work
|
struct work_impl : work
|
||||||
{
|
{
|
||||||
// workaround. remove the value initialization after msvc fixes their bug
|
http_session& self_;
|
||||||
http_session& self_ = *(http_session*)nullptr;
|
|
||||||
http::message<isRequest, Body, Fields> msg_;
|
http::message<isRequest, Body, Fields> msg_;
|
||||||
|
|
||||||
work_impl(
|
work_impl(
|
||||||
@ -478,20 +488,18 @@ class http_session : public std::enable_shared_from_this<http_session>
|
|||||||
operator()()
|
operator()()
|
||||||
{
|
{
|
||||||
http::async_write(
|
http::async_write(
|
||||||
self_.socket_,
|
self_.stream_,
|
||||||
msg_,
|
msg_,
|
||||||
boost::asio::bind_executor(
|
beast::bind_front_handler(
|
||||||
self_.strand_,
|
&http_session::on_write,
|
||||||
std::bind(
|
self_.shared_from_this(),
|
||||||
&http_session::on_write,
|
msg_.need_eof()));
|
||||||
self_.shared_from_this(),
|
|
||||||
std::placeholders::_1,
|
|
||||||
msg_.need_eof())));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Allocate and store the work
|
// Allocate and store the work
|
||||||
items_.push_back(std::make_unique<work_impl>(self_, std::move(msg)));
|
items_.push_back(
|
||||||
|
boost::make_unique<work_impl>(self_, std::move(msg)));
|
||||||
|
|
||||||
// If there was no previous work, start this one
|
// If there was no previous work, start this one
|
||||||
if (items_.size() == 1)
|
if (items_.size() == 1)
|
||||||
@ -499,92 +507,75 @@ class http_session : public std::enable_shared_from_this<http_session>
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
tcp::socket socket_;
|
beast::tcp_stream stream_;
|
||||||
boost::asio::strand<
|
beast::flat_buffer buffer_;
|
||||||
boost::asio::io_context::executor_type> strand_;
|
std::shared_ptr<std::string const> doc_root_;
|
||||||
boost::asio::steady_timer timer_;
|
|
||||||
boost::beast::flat_buffer buffer_;
|
|
||||||
std::string const& doc_root_;
|
|
||||||
etag_cache& etag_cache_;
|
etag_cache& etag_cache_;
|
||||||
http::request<http::string_body> req_;
|
|
||||||
queue queue_;
|
queue queue_;
|
||||||
|
|
||||||
|
// The parser is stored in an optional container so we can
|
||||||
|
// construct it from scratch it at the beginning of each new message.
|
||||||
|
boost::optional<http::request_parser<http::string_body>> parser_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Take ownership of the socket
|
// Take ownership of the socket
|
||||||
explicit
|
http_session(
|
||||||
http_session(
|
tcp::socket&& socket,
|
||||||
tcp::socket socket,
|
std::shared_ptr<std::string const> const& doc_root,
|
||||||
std::string const& doc_root,
|
etag_cache& etag_cache)
|
||||||
etag_cache& etagCache)
|
: stream_(std::move(socket))
|
||||||
: socket_(std::move(socket))
|
|
||||||
, strand_(socket_.get_executor())
|
|
||||||
, timer_(socket_.get_executor().context(),
|
|
||||||
(std::chrono::steady_clock::time_point::max)())
|
|
||||||
, doc_root_(doc_root)
|
, doc_root_(doc_root)
|
||||||
, etag_cache_(etagCache)
|
, etag_cache_(etag_cache)
|
||||||
, queue_(*this)
|
, queue_(*this)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the asynchronous operation
|
// Start the session
|
||||||
void
|
void
|
||||||
run()
|
run()
|
||||||
{
|
{
|
||||||
// Run the timer. The timer is operated
|
// We need to be executing within a strand to perform async operations
|
||||||
// continuously, this simplifies the code.
|
// on the I/O objects in this session. Although not strictly necessary
|
||||||
on_timer({});
|
// for single-threaded contexts, this example code is written to be
|
||||||
|
// thread-safe by default.
|
||||||
do_read();
|
net::dispatch(
|
||||||
|
stream_.get_executor(),
|
||||||
|
beast::bind_front_handler(
|
||||||
|
&http_session::do_read,
|
||||||
|
this->shared_from_this()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
void
|
void
|
||||||
do_read()
|
do_read()
|
||||||
{
|
{
|
||||||
// Set the timer
|
// Construct a new parser for each message
|
||||||
timer_.expires_after(std::chrono::seconds(15));
|
parser_.emplace();
|
||||||
|
|
||||||
// Read a request
|
// Apply a reasonable limit to the allowed size
|
||||||
http::async_read(socket_, buffer_, req_,
|
// of the body in bytes to prevent abuse.
|
||||||
boost::asio::bind_executor(
|
parser_->body_limit(10000);
|
||||||
strand_,
|
|
||||||
std::bind(
|
|
||||||
&http_session::on_read,
|
|
||||||
shared_from_this(),
|
|
||||||
std::placeholders::_1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called when the timer expires.
|
// Set the timeout.
|
||||||
void
|
stream_.expires_after(std::chrono::seconds(30));
|
||||||
on_timer(boost::system::error_code ec)
|
|
||||||
{
|
|
||||||
if (ec && ec != boost::asio::error::operation_aborted)
|
|
||||||
return fail(ec, "timer");
|
|
||||||
|
|
||||||
// Verify that the timer really expired since the deadline may have moved.
|
// Read a request using the parser-oriented interface
|
||||||
if (timer_.expiry() <= std::chrono::steady_clock::now())
|
http::async_read(
|
||||||
{
|
stream_,
|
||||||
// Closing the socket cancels all outstanding operations. They
|
buffer_,
|
||||||
// will complete with boost::asio::error::operation_aborted
|
*parser_,
|
||||||
socket_.shutdown(tcp::socket::shutdown_both, ec);
|
beast::bind_front_handler(
|
||||||
socket_.close(ec);
|
&http_session::on_read,
|
||||||
return;
|
shared_from_this()));
|
||||||
}
|
|
||||||
|
|
||||||
// Wait on the timer
|
|
||||||
timer_.async_wait(
|
|
||||||
boost::asio::bind_executor(
|
|
||||||
strand_,
|
|
||||||
std::bind(
|
|
||||||
&http_session::on_timer,
|
|
||||||
shared_from_this(),
|
|
||||||
std::placeholders::_1)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
on_read(boost::system::error_code ec)
|
on_read(beast::error_code ec, std::size_t bytes_transferred)
|
||||||
{
|
{
|
||||||
// Happens when the timer closes the socket
|
boost::ignore_unused(bytes_transferred);
|
||||||
if (ec == boost::asio::error::operation_aborted)
|
|
||||||
|
if (ec == beast::error::timeout)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// This means they closed the connection
|
// This means they closed the connection
|
||||||
@ -595,7 +586,7 @@ public:
|
|||||||
return fail(ec, "read");
|
return fail(ec, "read");
|
||||||
|
|
||||||
// Send the response
|
// Send the response
|
||||||
handle_request(doc_root_, etag_cache_, std::move(req_), queue_);
|
handle_request(*doc_root_, etag_cache_, parser_->release(), queue_);
|
||||||
|
|
||||||
// If we aren't at the queue limit, try to pipeline another request
|
// If we aren't at the queue limit, try to pipeline another request
|
||||||
if (!queue_.is_full())
|
if (!queue_.is_full())
|
||||||
@ -603,10 +594,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
on_write(boost::system::error_code ec, bool close)
|
on_write(bool close, beast::error_code ec, std::size_t bytes_transferred)
|
||||||
{
|
{
|
||||||
// Happens when the timer closes the socket
|
boost::ignore_unused(bytes_transferred);
|
||||||
if (ec == boost::asio::error::operation_aborted)
|
|
||||||
|
if (ec == beast::error::timeout)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ec)
|
if (ec)
|
||||||
@ -631,8 +623,8 @@ public:
|
|||||||
do_close()
|
do_close()
|
||||||
{
|
{
|
||||||
// Send a TCP shutdown
|
// Send a TCP shutdown
|
||||||
boost::system::error_code ec;
|
beast::error_code ec;
|
||||||
socket_.shutdown(tcp::socket::shutdown_send, ec);
|
stream_.socket().shutdown(tcp::socket::shutdown_send, ec);
|
||||||
|
|
||||||
// At this point the connection is closed gracefully
|
// At this point the connection is closed gracefully
|
||||||
}
|
}
|
||||||
@ -643,23 +635,23 @@ public:
|
|||||||
// Accepts incoming connections and launches the sessions
|
// Accepts incoming connections and launches the sessions
|
||||||
class listener : public std::enable_shared_from_this<listener>
|
class listener : public std::enable_shared_from_this<listener>
|
||||||
{
|
{
|
||||||
|
net::io_context& ioc_;
|
||||||
tcp::acceptor acceptor_;
|
tcp::acceptor acceptor_;
|
||||||
tcp::socket socket_;
|
std::shared_ptr<std::string const> doc_root_;
|
||||||
std::string const& doc_root_;
|
|
||||||
etag_cache& etag_cache_;
|
etag_cache& etag_cache_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
listener(
|
listener(
|
||||||
boost::asio::io_context& ioc,
|
net::io_context& ioc,
|
||||||
tcp::endpoint endpoint,
|
tcp::endpoint endpoint,
|
||||||
std::string const& doc_root,
|
std::shared_ptr<std::string const> const& doc_root,
|
||||||
etag_cache& etagCache)
|
etag_cache& etagCache)
|
||||||
: acceptor_(ioc)
|
: ioc_(ioc)
|
||||||
, socket_(ioc)
|
, acceptor_(net::make_strand(ioc))
|
||||||
, doc_root_(doc_root)
|
, doc_root_(doc_root)
|
||||||
, etag_cache_(etagCache)
|
, etag_cache_(etagCache)
|
||||||
{
|
{
|
||||||
boost::system::error_code ec;
|
beast::error_code ec;
|
||||||
|
|
||||||
// Open the acceptor
|
// Open the acceptor
|
||||||
acceptor_.open(endpoint.protocol(), ec);
|
acceptor_.open(endpoint.protocol(), ec);
|
||||||
@ -669,6 +661,14 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// // Allow address reuse
|
||||||
|
// acceptor_.set_option(net::socket_base::reuse_address(true), ec);
|
||||||
|
// if (ec)
|
||||||
|
// {
|
||||||
|
// fail(ec, "set_option");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
// Bind to the server address
|
// Bind to the server address
|
||||||
acceptor_.bind(endpoint, ec);
|
acceptor_.bind(endpoint, ec);
|
||||||
if (ec)
|
if (ec)
|
||||||
@ -679,7 +679,7 @@ public:
|
|||||||
|
|
||||||
// Start listening for connections
|
// Start listening for connections
|
||||||
acceptor_.listen(
|
acceptor_.listen(
|
||||||
boost::asio::socket_base::max_listen_connections, ec);
|
net::socket_base::max_listen_connections, ec);
|
||||||
if (ec)
|
if (ec)
|
||||||
{
|
{
|
||||||
fail(ec, "listen");
|
fail(ec, "listen");
|
||||||
@ -691,24 +691,31 @@ public:
|
|||||||
void
|
void
|
||||||
run()
|
run()
|
||||||
{
|
{
|
||||||
if (!acceptor_.is_open())
|
// We need to be executing within a strand to perform async operations
|
||||||
return;
|
// on the I/O objects in this session. Although not strictly necessary
|
||||||
do_accept();
|
// for single-threaded contexts, this example code is written to be
|
||||||
|
// thread-safe by default.
|
||||||
|
net::dispatch(
|
||||||
|
acceptor_.get_executor(),
|
||||||
|
beast::bind_front_handler(
|
||||||
|
&listener::do_accept,
|
||||||
|
this->shared_from_this()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
void
|
void
|
||||||
do_accept()
|
do_accept()
|
||||||
{
|
{
|
||||||
|
// The new connection gets its own strand
|
||||||
acceptor_.async_accept(
|
acceptor_.async_accept(
|
||||||
socket_,
|
net::make_strand(ioc_),
|
||||||
std::bind(
|
beast::bind_front_handler(
|
||||||
&listener::on_accept,
|
&listener::on_accept,
|
||||||
shared_from_this(),
|
shared_from_this()));
|
||||||
std::placeholders::_1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
on_accept(boost::system::error_code ec)
|
on_accept(beast::error_code ec, tcp::socket socket)
|
||||||
{
|
{
|
||||||
if (ec)
|
if (ec)
|
||||||
{
|
{
|
||||||
@ -716,9 +723,9 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Create the http_session and run it
|
// Create the http session and run it
|
||||||
std::make_shared<http_session>(
|
std::make_shared<http_session>(
|
||||||
std::move(socket_),
|
std::move(socket),
|
||||||
doc_root_,
|
doc_root_,
|
||||||
etag_cache_)->run();
|
etag_cache_)->run();
|
||||||
}
|
}
|
||||||
@ -759,7 +766,7 @@ public:
|
|||||||
std::make_shared<listener>(
|
std::make_shared<listener>(
|
||||||
m_ioc,
|
m_ioc,
|
||||||
m_endpoint,
|
m_endpoint,
|
||||||
m_docRoot,
|
std::make_shared<std::string>(m_docRoot),
|
||||||
m_etagCache)->run();
|
m_etagCache)->run();
|
||||||
|
|
||||||
// Run the I/O service on the requested number of threads
|
// Run the I/O service on the requested number of threads
|
||||||
|
|||||||
@ -1,147 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{B12702AD-ABFB-343A-A199-8E24837244A3}</ProjectGuid>
|
|
||||||
<Keyword>Qt4VSv1.0</Keyword>
|
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<PropertyGroup Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<QtMsBuild>$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
|
||||||
</Target>
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionSettings" />
|
|
||||||
<ImportGroup Label="Shared" />
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="project-common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="project-common.props" />
|
|
||||||
<Import Project="..\non-debugable.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0601;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<AdditionalDependencies>qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<IncludePath>%(AdditionalIncludeDirectories)</IncludePath>
|
|
||||||
<Define>_WIN32_WINNT=0x0601;WIN32;_DEBUG;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;CURL_STATICLIB;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING;_MBCS</Define>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0601;WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<StripPrivateSymbols>YES</StripPrivateSymbols>
|
|
||||||
<AssemblyDebug>false</AssemblyDebug>
|
|
||||||
<ProgramDatabaseFile />
|
|
||||||
<FullProgramDatabaseFile>false</FullProgramDatabaseFile>
|
|
||||||
<AdditionalDependencies>qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<Define>_WIN32_WINNT=0x0601;WIN32;NDEBUG;BOOST_EXCEPTION_DISABLE;QT_NO_DEBUG;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;CURL_STATICLIB;_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING;_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING;_MBCS</Define>
|
|
||||||
<IncludePath>%(AdditionalIncludeDirectories)</IncludePath>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="CCEngineLoader.cpp" />
|
|
||||||
<ClCompile Include="main.cpp" />
|
|
||||||
<ClCompile Include="UpdateWorker.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="CCEngineLoader.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="CCEngineLoader.ui" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="CCEngineLoader.qrc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="CCEngineLoader.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\libLicenseClient\libLicenseClient.vcxproj">
|
|
||||||
<Project>{51345e59-83e5-4389-93a9-0131b40522b7}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="UpdateWorker.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.targets" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
<ProjectExtensions>
|
|
||||||
<VisualStudio>
|
|
||||||
<UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_Win32="$(DefaultQtVersion)" MocOptions="" />
|
|
||||||
</VisualStudio>
|
|
||||||
</ProjectExtensions>
|
|
||||||
</Project>
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
|
|
||||||
<Extensions>qrc;*</Extensions>
|
|
||||||
<ParseFiles>false</ParseFiles>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Form Files">
|
|
||||||
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
|
|
||||||
<Extensions>ui</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
|
|
||||||
<Extensions>qrc;*</Extensions>
|
|
||||||
<ParseFiles>false</ParseFiles>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Generated Files">
|
|
||||||
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
|
|
||||||
<Extensions>moc;h;cpp</Extensions>
|
|
||||||
<SourceControlFiles>False</SourceControlFiles>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="main.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="CCEngineLoader.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="UpdateWorker.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="CCEngineLoader.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="UpdateWorker.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="CCEngineLoader.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="CCEngineLoader.qrc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtRcc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include="CCEngineLoader.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
65
CCEngineLoader/CMakeLists.txt
Normal file
65
CCEngineLoader/CMakeLists.txt
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
cmake_minimum_required (VERSION 3.8)
|
||||||
|
|
||||||
|
set(PROJECT_NAME CCEngineLoader)
|
||||||
|
project (${PROJECT_NAME})
|
||||||
|
|
||||||
|
# Download automatically, you can also just copy the conan.cmake file
|
||||||
|
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
|
||||||
|
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
|
||||||
|
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.16.1/conan.cmake"
|
||||||
|
"${CMAKE_BINARY_DIR}/conan.cmake"
|
||||||
|
EXPECTED_HASH SHA256=396e16d0f5eabdc6a14afddbcfff62a54a7ee75c6da23f32f7a31bc85db23484
|
||||||
|
TLS_VERIFY ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
|
set(CMAKE_PREFIX_PATH ${PROJECT_BINARY_DIR})
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
include(${CMAKE_BINARY_DIR}/conan.cmake)
|
||||||
|
|
||||||
|
conan_cmake_run(CONANFILE conanfile.txt
|
||||||
|
BUILD missing
|
||||||
|
BASIC_SETUP)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Source groups
|
||||||
|
################################################################################
|
||||||
|
set(resource
|
||||||
|
"CCEngineLoader.ui"
|
||||||
|
"CCEngineLoader.qrc"
|
||||||
|
)
|
||||||
|
source_group("resource" FILES ${resource})
|
||||||
|
|
||||||
|
set(src
|
||||||
|
"CCEngineLoader.cpp"
|
||||||
|
"CCEngineLoader.h"
|
||||||
|
"main.cpp"
|
||||||
|
"UpdateWorker.cpp"
|
||||||
|
"UpdateWorker.h"
|
||||||
|
)
|
||||||
|
source_group("src" FILES ${src})
|
||||||
|
|
||||||
|
set(ALL_FILES
|
||||||
|
${resource}
|
||||||
|
${src}
|
||||||
|
)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Target
|
||||||
|
################################################################################
|
||||||
|
include_directories(${libLicenseClient_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME} ${ALL_FILES})
|
||||||
|
|
||||||
|
# Find the QtWidgets library
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
|
||||||
|
find_package(Qt5 CONFIG REQUIRED COMPONENTS Core Gui Widgets)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} libLicenseClient Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||||
@ -1,18 +1,11 @@
|
|||||||
[requires]
|
[requires]
|
||||||
libzip/1.8.0
|
|
||||||
libcurl/7.78.0
|
|
||||||
boost/1.77.0
|
boost/1.77.0
|
||||||
cryptopp/8.5.0
|
|
||||||
qt/5.15.2
|
qt/5.15.2
|
||||||
|
|
||||||
[generators]
|
[generators]
|
||||||
visual_studio
|
cmake_find_package_multi
|
||||||
|
qt
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
libzip:shared=False
|
|
||||||
libcurl:shared=False
|
|
||||||
libcurl:with_openssl=False
|
|
||||||
libcurl:with_winssl=True
|
|
||||||
boost:shared=False
|
boost:shared=False
|
||||||
cryptopp:shared=False
|
|
||||||
qt:shared=True
|
qt:shared=True
|
||||||
|
|||||||
@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="build\conanbuildinfo_multi.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)..\..\libLicenseClient\api;$(ProjectDir)GeneratedFiles;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
31
CMakeLists.txt
Normal file
31
CMakeLists.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
|
# You can tweak some common (for all subprojects) stuff here. For example:
|
||||||
|
|
||||||
|
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||||||
|
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
||||||
|
|
||||||
|
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||||||
|
message(SEND_ERROR "In-source builds are not allowed.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
|
set(CMAKE_COLOR_MAKEFILE ON)
|
||||||
|
|
||||||
|
# Remove 'lib' prefix for shared libraries on Windows
|
||||||
|
if (WIN32)
|
||||||
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||||
|
ADD_DEFINITIONS(/bigobj)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Force 8.1 SDK, to keep it compatible with win7
|
||||||
|
if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
|
set (CMAKE_SYSTEM_VERSION 8.1 CACHE TYPE INTERNAL FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# When done tweaking common stuff, configure the components (subprojects).
|
||||||
|
# NOTE: The order matters! The most independent ones should go first.
|
||||||
|
add_subdirectory(../libLicenseClient libLicenseClient)
|
||||||
|
add_subdirectory(../libLicenseClient/test libLicenseClientTest)
|
||||||
|
add_subdirectory(CCEngine)
|
||||||
|
add_subdirectory(CCEngineLoader)
|
||||||
124
CMakePresets.json
Normal file
124
CMakePresets.json
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"cmakeMinimumRequired": {
|
||||||
|
"major": 3,
|
||||||
|
"minor": 19,
|
||||||
|
"patch": 0
|
||||||
|
},
|
||||||
|
"configurePresets": [
|
||||||
|
{
|
||||||
|
"name": "linux-gcc-debug",
|
||||||
|
"displayName": "Linux GCC Debug",
|
||||||
|
"description": "Sets Ninja generator, compilers, build and install directory, debug build type",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
|
||||||
|
"CMAKE_C_COMPILER": "gcc",
|
||||||
|
"CMAKE_CXX_COMPILER": "c++"
|
||||||
|
},
|
||||||
|
"vendor": {
|
||||||
|
"microsoft.com/VisualStudioSettings/CMake/1.0": {
|
||||||
|
"hostOS": [ "Linux" ]
|
||||||
|
},
|
||||||
|
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
|
||||||
|
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "linux-gcc-release",
|
||||||
|
"displayName": "Linux GCC Release",
|
||||||
|
"description": "Sets Ninja generator, compilers, build and install directory, debug build type",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
|
||||||
|
"CMAKE_C_COMPILER": "gcc",
|
||||||
|
"CMAKE_CXX_COMPILER": "c++"
|
||||||
|
},
|
||||||
|
"vendor": {
|
||||||
|
"microsoft.com/VisualStudioSettings/CMake/1.0": {
|
||||||
|
"hostOS": [ "Linux" ]
|
||||||
|
},
|
||||||
|
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
|
||||||
|
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "WSL-gcc-debug",
|
||||||
|
"displayName": "Linux Debug",
|
||||||
|
"description": "Target the Windows Subsystem for Linux (WSL) or a remote Linux system.",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
|
||||||
|
},
|
||||||
|
"vendor": {
|
||||||
|
"microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Linux" ] },
|
||||||
|
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win64-debug",
|
||||||
|
"displayName": "Windows x64 Debug",
|
||||||
|
"description": "Target Windows with the Visual Studio development environment.",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||||
|
"architecture": {
|
||||||
|
"value": "x64",
|
||||||
|
"strategy": "external"
|
||||||
|
},
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
|
||||||
|
"CMAKE_SYSTEM_VERSION": "8.1"
|
||||||
|
},
|
||||||
|
"vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Windows" ] } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win64-release",
|
||||||
|
"displayName": "Windows x64 Release",
|
||||||
|
"description": "Target Windows with the Visual Studio development environment.",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||||
|
"architecture": {
|
||||||
|
"value": "x64",
|
||||||
|
"strategy": "external"
|
||||||
|
},
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
|
||||||
|
"CMAKE_SYSTEM_VERSION": "8.1"
|
||||||
|
},
|
||||||
|
"vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Windows" ] } }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buildPresets": [
|
||||||
|
{
|
||||||
|
"name": "linux-gcc-debug",
|
||||||
|
"configurePreset": "linux-gcc-debug"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "linux-gcc-release",
|
||||||
|
"configurePreset": "linux-gcc-release"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win64-debug",
|
||||||
|
"configurePreset": "win64-debug"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "win64-release",
|
||||||
|
"configurePreset": "win64-release"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vendor": {
|
||||||
|
"example.com/ExampleIDE/1.0": {
|
||||||
|
"autoFormat": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,29 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets" />
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<CreateHotpatchableImage>false</CreateHotpatchableImage>
|
|
||||||
<DebugInformationFormat>None</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<StripPrivateSymbols>YES</StripPrivateSymbols>
|
|
||||||
<AssemblyDebug>false</AssemblyDebug>
|
|
||||||
<ProgramDatabaseFile />
|
|
||||||
<FullProgramDatabaseFile>false</FullProgramDatabaseFile>
|
|
||||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets" />
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(ProjectDir)..\..\libLicenseClient\api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<InputFile>%(FullPath)</InputFile>
|
|
||||||
<OutputFile>.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</OutputFile>
|
|
||||||
<DynamicSource>output</DynamicSource>
|
|
||||||
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<IncludePath>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName)\.;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;%(IncludePath)</IncludePath>
|
|
||||||
<Define>QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;%(Define)</Define>
|
|
||||||
<QTDIR>$(QTDIR)</QTDIR>
|
|
||||||
</QtMoc>
|
|
||||||
<QtUic>
|
|
||||||
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<OutputFile>.\GeneratedFiles\ui_%(Filename).h</OutputFile>
|
|
||||||
</QtUic>
|
|
||||||
<QtRcc>
|
|
||||||
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<OutputFile>.\GeneratedFiles\qrc_%(Filename).cpp</OutputFile>
|
|
||||||
</QtRcc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="..\thirdparty\qt-5.10.1\qt.props" />
|
|
||||||
<Import Project="qt-ui-common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="..\thirdparty\qt-5.10.1\qt.props" />
|
|
||||||
<Import Project="qt-ui-common.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup>
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
<QtMoc>
|
|
||||||
<Define>QT_NO_DEBUG;NDEBUG;%(Define)</Define>
|
|
||||||
</QtMoc>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup />
|
|
||||||
</Project>
|
|
||||||
Loading…
Reference in New Issue
Block a user