From cde5d33a2e22dc6a02423334b0a8b766348cb296 Mon Sep 17 00:00:00 2001 From: Felipe Aburaya Date: Thu, 13 May 2021 16:29:48 +0200 Subject: [PATCH] Version 2.8.0 (Alpha) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bringt Projekte auf den neuesten toolset v143. * Schafft Erstellung für die ARM Plattform ab * Passt die SQL-Skripts an LocalDB an. * Behebt Probleme mit dem Einsatz. * Behebt Problem bei der Kompilierung des Moduls Util. * Behebt Problem mit dem CommandLineParser. --- 3FD.sln | 86 +-- 3fd/broker/3fd-broker.vcxproj | 6 +- 3fd/core/3fd-core-winrt.vcxproj | 85 +-- 3fd/core/3fd-core.vcxproj | 14 +- 3fd/isam/3fd-isam-winrt.vcxproj | 81 --- 3fd/isam/3fd-isam.vcxproj | 6 +- 3fd/opencl/3fd-opencl.vcxproj | 6 +- 3fd/rpc/3fd-rpc.vcxproj | 6 +- 3fd/sqlite/3fd-sqlite-winrt.vcxproj | 75 --- 3fd/sqlite/3fd-sqlite.vcxproj | 6 +- 3fd/utils/3fd-utils-winrt.vcxproj | 75 --- 3fd/utils/3fd-utils.vcxproj | 16 +- 3fd/utils/cmdline.cpp | 52 +- 3fd/utils/serialization.h | 18 - 3fd/wws/3fd-wws.vcxproj | 6 +- IntegrationTests/CreateMsSqlSvcBrokerDB.sql | Bin 6726 -> 6734 bytes IntegrationTests/IntegrationTests.vcxproj | 7 +- .../IntegrationTests.vcxproj.filters | 3 + IntegrationTests/RestoreSvcBrokerDbForWin.sql | Bin 322 -> 468 bytes .../UWP/IntegrationTestsApp.vcxproj | 67 -- SvcBrokerTest.bak | Bin 3137536 -> 2670592 bytes TestRpcClient/TestRpcClient.vcxproj | 6 +- TestWwsClient/TestWwsClient.vcxproj | 6 +- UnitTests/UWP/UnitTestsApp.vcxproj | 73 --- UnitTests/UnitTests.vcxproj | 6 +- UnitTests/tests_utils_cmdline.cpp | 579 +++++++++++------- gtest/msvc/gtest-md.vcxproj | 8 +- gtest/msvc/gtest-winrt.vcxproj | 69 --- nanodbc/nanodbc.vcxproj | 6 +- sqlite3/sqlite3-winrt.vcxproj | 71 --- sqlite3/sqlite3.vcxproj | 6 +- 31 files changed, 443 insertions(+), 1002 deletions(-) diff --git a/3FD.sln b/3FD.sln index 2b93429..cc57b14 100644 --- a/3FD.sln +++ b/3FD.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.2011 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31229.75 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests", "UnitTests\UnitTests.vcxproj", "{A657480D-D083-4C31-B499-42FF50481AC1}" EndProject @@ -58,8 +58,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3fd-sqlite-winrt", "3fd\sql EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3fd-isam-winrt", "3fd\isam\3fd-isam-winrt.vcxproj", "{096514E8-A0BA-4D60-A44D-D0AA1391CAD6}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3fd-core-winrt", "3fd\core\3fd-core-winrt.vcxproj", "{E05808C1-446F-4F5D-B232-52AF3535C31D}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UWP", "UWP", "{B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Desktop", "Desktop", "{9BDE25D2-D561-4A5E-90B8-C6BBAF3D8FFD}" @@ -74,172 +72,106 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IntegrationTestsApp", "Inte EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nanodbc", "nanodbc\nanodbc.vcxproj", "{D0320193-9A05-410F-A52E-049638FAA95E}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3fd-core-winrt", "3fd\core\3fd-core-winrt.vcxproj", "{E05808C1-446F-4F5D-B232-52AF3535C31D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM Debug|x64 = Debug|x64 - Release|ARM = Release|ARM Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A657480D-D083-4C31-B499-42FF50481AC1}.Debug|ARM.ActiveCfg = Debug|x64 {A657480D-D083-4C31-B499-42FF50481AC1}.Debug|x64.ActiveCfg = Debug|x64 {A657480D-D083-4C31-B499-42FF50481AC1}.Debug|x64.Build.0 = Debug|x64 - {A657480D-D083-4C31-B499-42FF50481AC1}.Release|ARM.ActiveCfg = Debug|x64 {A657480D-D083-4C31-B499-42FF50481AC1}.Release|x64.ActiveCfg = Release|x64 {A657480D-D083-4C31-B499-42FF50481AC1}.Release|x64.Build.0 = Release|x64 - {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Debug|ARM.ActiveCfg = Debug|x64 {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Debug|x64.ActiveCfg = Debug|x64 {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Debug|x64.Build.0 = Debug|x64 - {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Release|ARM.ActiveCfg = Debug|x64 {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Release|x64.ActiveCfg = Release|x64 {B288E7DC-4F10-4432-8CB9-2061400F4E0C}.Release|x64.Build.0 = Release|x64 - {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Debug|ARM.ActiveCfg = Debug|x64 {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Debug|x64.ActiveCfg = Debug|x64 {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Debug|x64.Build.0 = Debug|x64 - {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Release|ARM.ActiveCfg = Debug|x64 {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Release|x64.ActiveCfg = Release|x64 {6ADF3A4B-1E22-41BA-9293-96593E6A45BE}.Release|x64.Build.0 = Release|x64 - {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Debug|ARM.ActiveCfg = Debug|x64 {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Debug|x64.ActiveCfg = Debug|x64 {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Debug|x64.Build.0 = Debug|x64 - {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Release|ARM.ActiveCfg = Debug|x64 {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Release|x64.ActiveCfg = Release|x64 {4913E097-136E-4BC4-BF8C-D3341FB1425A}.Release|x64.Build.0 = Release|x64 - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Debug|ARM.ActiveCfg = Debug|ARM - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Debug|ARM.Build.0 = Debug|ARM - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Debug|ARM.Deploy.0 = Debug|ARM {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Debug|x64.ActiveCfg = Debug|x64 {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Debug|x64.Deploy.0 = Debug|x64 - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Release|ARM.ActiveCfg = Debug|ARM - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Release|ARM.Build.0 = Debug|ARM - {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Release|ARM.Deploy.0 = Debug|ARM {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Release|x64.ActiveCfg = Release|x64 {B3F6666B-A557-4C4D-9E89-3D0FAA275F52}.Release|x64.Deploy.0 = Release|x64 - {AB6D8426-4117-409C-A863-3D1A98C27150}.Debug|ARM.ActiveCfg = Debug|x64 {AB6D8426-4117-409C-A863-3D1A98C27150}.Debug|x64.ActiveCfg = Debug|x64 {AB6D8426-4117-409C-A863-3D1A98C27150}.Debug|x64.Build.0 = Debug|x64 - {AB6D8426-4117-409C-A863-3D1A98C27150}.Release|ARM.ActiveCfg = Debug|x64 {AB6D8426-4117-409C-A863-3D1A98C27150}.Release|x64.ActiveCfg = Release|x64 {AB6D8426-4117-409C-A863-3D1A98C27150}.Release|x64.Build.0 = Release|x64 - {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Debug|ARM.ActiveCfg = Debug|ARM - {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Debug|ARM.Build.0 = Debug|ARM {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Debug|x64.ActiveCfg = Debug|x64 {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Debug|x64.Build.0 = Debug|x64 - {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Release|ARM.ActiveCfg = Debug|ARM - {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Release|ARM.Build.0 = Debug|ARM {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Release|x64.ActiveCfg = Release|x64 {7282021F-E91A-4E20-B8F8-04C0FF9431F3}.Release|x64.Build.0 = Release|x64 - {DCC65A1B-6769-4347-A87E-7A86832DA681}.Debug|ARM.ActiveCfg = Debug|x64 {DCC65A1B-6769-4347-A87E-7A86832DA681}.Debug|x64.ActiveCfg = Debug|x64 {DCC65A1B-6769-4347-A87E-7A86832DA681}.Debug|x64.Build.0 = Debug|x64 - {DCC65A1B-6769-4347-A87E-7A86832DA681}.Release|ARM.ActiveCfg = Debug|x64 {DCC65A1B-6769-4347-A87E-7A86832DA681}.Release|x64.ActiveCfg = Release|x64 {DCC65A1B-6769-4347-A87E-7A86832DA681}.Release|x64.Build.0 = Release|x64 - {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Debug|ARM.ActiveCfg = Debug|x64 {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Debug|x64.ActiveCfg = Debug|x64 {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Debug|x64.Build.0 = Debug|x64 - {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Release|ARM.ActiveCfg = Debug|x64 {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Release|x64.ActiveCfg = Release|x64 {1DFEEA48-8DC4-498B-8332-56CDD8A4780A}.Release|x64.Build.0 = Release|x64 - {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Debug|ARM.ActiveCfg = Debug|x64 {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Debug|x64.ActiveCfg = Debug|x64 {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Debug|x64.Build.0 = Debug|x64 - {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Release|ARM.ActiveCfg = Debug|x64 {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Release|x64.ActiveCfg = Release|x64 {D7520E59-B89C-41C5-B49A-851A09AAE94A}.Release|x64.Build.0 = Release|x64 - {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Debug|ARM.ActiveCfg = Debug|x64 {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Debug|x64.ActiveCfg = Debug|x64 {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Debug|x64.Build.0 = Debug|x64 - {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Release|ARM.ActiveCfg = Debug|x64 {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Release|x64.ActiveCfg = Release|x64 {A5801D3E-0DC8-463C-8692-8E313237C9F6}.Release|x64.Build.0 = Release|x64 - {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Debug|ARM.ActiveCfg = Debug|x64 {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Debug|x64.ActiveCfg = Debug|x64 {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Debug|x64.Build.0 = Debug|x64 - {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Release|ARM.ActiveCfg = Debug|x64 {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Release|x64.ActiveCfg = Release|x64 {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C}.Release|x64.Build.0 = Release|x64 - {116445B6-734A-437C-A4A6-B81C8FF32C93}.Debug|ARM.ActiveCfg = Debug|x64 {116445B6-734A-437C-A4A6-B81C8FF32C93}.Debug|x64.ActiveCfg = Debug|x64 {116445B6-734A-437C-A4A6-B81C8FF32C93}.Debug|x64.Build.0 = Debug|x64 - {116445B6-734A-437C-A4A6-B81C8FF32C93}.Release|ARM.ActiveCfg = Debug|x64 {116445B6-734A-437C-A4A6-B81C8FF32C93}.Release|x64.ActiveCfg = Release|x64 {116445B6-734A-437C-A4A6-B81C8FF32C93}.Release|x64.Build.0 = Release|x64 - {20634D79-4080-43D4-908C-AF47486F9851}.Debug|ARM.ActiveCfg = Debug|x64 {20634D79-4080-43D4-908C-AF47486F9851}.Debug|x64.ActiveCfg = Debug|x64 {20634D79-4080-43D4-908C-AF47486F9851}.Debug|x64.Build.0 = Debug|x64 - {20634D79-4080-43D4-908C-AF47486F9851}.Release|ARM.ActiveCfg = Debug|x64 {20634D79-4080-43D4-908C-AF47486F9851}.Release|x64.ActiveCfg = Release|x64 {20634D79-4080-43D4-908C-AF47486F9851}.Release|x64.Build.0 = Release|x64 - {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Debug|ARM.ActiveCfg = Debug|x64 {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Debug|x64.ActiveCfg = Debug|x64 {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Debug|x64.Build.0 = Debug|x64 - {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Release|ARM.ActiveCfg = Debug|x64 {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Release|x64.ActiveCfg = Release|x64 {CC02DA5B-8F56-4A07-8452-7DBEF23370FB}.Release|x64.Build.0 = Release|x64 - {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Debug|ARM.ActiveCfg = Debug|ARM - {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Debug|ARM.Build.0 = Debug|ARM {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Debug|x64.ActiveCfg = Debug|x64 {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Debug|x64.Build.0 = Debug|x64 - {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Release|ARM.ActiveCfg = Debug|ARM - {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Release|ARM.Build.0 = Debug|ARM {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Release|x64.ActiveCfg = Release|x64 {7070EC43-8601-4586-BD9C-8F79F9CB385C}.Release|x64.Build.0 = Release|x64 - {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Debug|ARM.ActiveCfg = Debug|ARM - {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Debug|ARM.Build.0 = Debug|ARM {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Debug|x64.ActiveCfg = Debug|x64 {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Debug|x64.Build.0 = Debug|x64 - {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Release|ARM.ActiveCfg = Debug|ARM - {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Release|ARM.Build.0 = Debug|ARM {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Release|x64.ActiveCfg = Release|x64 {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D}.Release|x64.Build.0 = Release|x64 - {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Debug|ARM.ActiveCfg = Debug|ARM - {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Debug|ARM.Build.0 = Debug|ARM {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Debug|x64.ActiveCfg = Debug|x64 {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Debug|x64.Build.0 = Debug|x64 - {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Release|ARM.ActiveCfg = Debug|ARM - {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Release|ARM.Build.0 = Debug|ARM {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Release|x64.ActiveCfg = Release|x64 {096514E8-A0BA-4D60-A44D-D0AA1391CAD6}.Release|x64.Build.0 = Release|x64 - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|ARM.ActiveCfg = Debug|ARM - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|ARM.Build.0 = Debug|ARM - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|x64.ActiveCfg = Debug|x64 - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|x64.Build.0 = Debug|x64 - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|ARM.ActiveCfg = Debug|ARM - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|ARM.Build.0 = Debug|ARM - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|x64.ActiveCfg = Release|x64 - {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|x64.Build.0 = Release|x64 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|ARM.ActiveCfg = Debug|x64 {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|x64.ActiveCfg = Debug|x64 {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|x64.Build.0 = Debug|x64 - {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|ARM.ActiveCfg = Debug|x64 {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|x64.ActiveCfg = Release|x64 {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|x64.Build.0 = Release|x64 - {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Debug|ARM.ActiveCfg = Debug|ARM - {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Debug|ARM.Build.0 = Debug|ARM {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Debug|x64.ActiveCfg = Debug|x64 {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Debug|x64.Build.0 = Debug|x64 - {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Release|ARM.ActiveCfg = Debug|ARM - {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Release|ARM.Build.0 = Debug|ARM {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Release|x64.ActiveCfg = Release|x64 {B650C884-6640-4FEE-9C5B-62E4D84D9E0F}.Release|x64.Build.0 = Release|x64 - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Debug|ARM.ActiveCfg = Debug|ARM - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Debug|ARM.Build.0 = Debug|ARM - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Debug|ARM.Deploy.0 = Debug|ARM {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Debug|x64.ActiveCfg = Debug|x64 {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Debug|x64.Deploy.0 = Debug|x64 - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Release|ARM.ActiveCfg = Debug|ARM - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Release|ARM.Build.0 = Debug|ARM - {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Release|ARM.Deploy.0 = Debug|ARM {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Release|x64.ActiveCfg = Release|x64 {76B6E741-768B-491E-9DBC-8F9C4B2E32C9}.Release|x64.Deploy.0 = Release|x64 - {D0320193-9A05-410F-A52E-049638FAA95E}.Debug|ARM.ActiveCfg = Debug|x64 {D0320193-9A05-410F-A52E-049638FAA95E}.Debug|x64.ActiveCfg = Debug|x64 {D0320193-9A05-410F-A52E-049638FAA95E}.Debug|x64.Build.0 = Debug|x64 - {D0320193-9A05-410F-A52E-049638FAA95E}.Release|ARM.ActiveCfg = Debug|x64 {D0320193-9A05-410F-A52E-049638FAA95E}.Release|x64.ActiveCfg = Release|x64 {D0320193-9A05-410F-A52E-049638FAA95E}.Release|x64.Build.0 = Release|x64 + {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|x64.ActiveCfg = Debug|x64 + {E05808C1-446F-4F5D-B232-52AF3535C31D}.Debug|x64.Build.0 = Debug|x64 + {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|x64.ActiveCfg = Release|x64 + {E05808C1-446F-4F5D-B232-52AF3535C31D}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -265,12 +197,12 @@ Global {7070EC43-8601-4586-BD9C-8F79F9CB385C} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} {EE1F8D7F-D411-49E5-A1AB-60F2820AA77D} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} {096514E8-A0BA-4D60-A44D-D0AA1391CAD6} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} - {E05808C1-446F-4F5D-B232-52AF3535C31D} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} {D1E2FDAE-D2C0-4A32-A980-F7DD8010CF3D} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} = {8E00B911-43B2-49D5-9B4A-AB6E1ED097A1} {B650C884-6640-4FEE-9C5B-62E4D84D9E0F} = {D1E2FDAE-D2C0-4A32-A980-F7DD8010CF3D} {76B6E741-768B-491E-9DBC-8F9C4B2E32C9} = {D1E2FDAE-D2C0-4A32-A980-F7DD8010CF3D} {D0320193-9A05-410F-A52E-049638FAA95E} = {9BDE25D2-D561-4A5E-90B8-C6BBAF3D8FFD} + {E05808C1-446F-4F5D-B232-52AF3535C31D} = {B7D0F1EF-F124-4B38-BE9F-27887CAF1CBE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution VisualSVNWorkingCopyRoot = . diff --git a/3fd/broker/3fd-broker.vcxproj b/3fd/broker/3fd-broker.vcxproj index 6c864ff..6fb3cf2 100644 --- a/3fd/broker/3fd-broker.vcxproj +++ b/3fd/broker/3fd-broker.vcxproj @@ -15,19 +15,19 @@ {CC02DA5B-8F56-4A07-8452-7DBEF23370FB} Win32Proj My3fdbroker - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/3fd/core/3fd-core-winrt.vcxproj b/3fd/core/3fd-core-winrt.vcxproj index b4779c9..3caba2d 100644 --- a/3fd/core/3fd-core-winrt.vcxproj +++ b/3fd/core/3fd-core-winrt.vcxproj @@ -1,18 +1,10 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -26,44 +18,27 @@ 14.0 true Windows Store - 10.0.17763.0 + 10.0 10.0.17134.0 10.0 - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false true - v141 + v142 - - - - - - @@ -72,16 +47,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\ @@ -92,50 +57,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - 4018;4244;4267;4290;4482 - - - Console - false - false - - - runtimeobject.lib; - - - copy $(TargetDir)\*core-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - 4018;4244;4267;4290;4482 - - - Console - false - false - - - runtimeobject.lib; - - - copy $(TargetDir)\*core-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - Use @@ -216,8 +137,6 @@ - Create - Create Create Create Create diff --git a/3fd/core/3fd-core.vcxproj b/3fd/core/3fd-core.vcxproj index 065df2d..3a9e361 100644 --- a/3fd/core/3fd-core.vcxproj +++ b/3fd/core/3fd-core.vcxproj @@ -15,20 +15,20 @@ {DCC65A1B-6769-4347-A87E-7A86832DA681} Win32Proj My3fdcore - 10.0.17763.0 + 10.0 3fd-core StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode @@ -73,7 +73,8 @@ runtimeobject.lib; - copy $(ProjectDir)\callstacktracer.h $(SolutionDir)\install\include\3fd\core\ + mkdir $(SolutionDir)\install\include\3fd\core\ +copy $(ProjectDir)\callstacktracer.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\configuration.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\dependencies.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\exceptions.h $(SolutionDir)\install\include\3fd\core\ @@ -91,6 +92,7 @@ copy $(ProjectDir)\preprocessing.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\runtime.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\sptr.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\3fd-config-template.xml $(SolutionDir)\install\include\3fd\template.3fd.config +mkdir $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ copy $(TargetDir)\*core.* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ @@ -119,7 +121,8 @@ copy $(TargetDir)\*core.* $(SolutionDir)\install\lib\$(Platform)\$(Configuration runtimeobject.lib; - copy $(ProjectDir)\callstacktracer.h $(SolutionDir)\install\include\3fd\core\ + mkdir $(SolutionDir)\install\include\3fd\core\ +copy $(ProjectDir)\callstacktracer.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\configuration.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\dependencies.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\exceptions.h $(SolutionDir)\install\include\3fd\core\ @@ -137,6 +140,7 @@ copy $(ProjectDir)\preprocessing.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\runtime.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\sptr.h $(SolutionDir)\install\include\3fd\core\ copy $(ProjectDir)\3fd-config-template.xml $(SolutionDir)\install\include\3fd\template.3fd.config +mkdir $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ copy $(TargetDir)\*core.* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ diff --git a/3fd/isam/3fd-isam-winrt.vcxproj b/3fd/isam/3fd-isam-winrt.vcxproj index 1ac8ff7..887bd22 100644 --- a/3fd/isam/3fd-isam-winrt.vcxproj +++ b/3fd/isam/3fd-isam-winrt.vcxproj @@ -1,18 +1,10 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -31,22 +23,11 @@ 10.0 - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false @@ -58,12 +39,6 @@ - - - - - - @@ -72,16 +47,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\ @@ -92,50 +57,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - esent.lib; - - - copy $(TargetDir)\*isam-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - esent.lib; - - - copy $(TargetDir)\*isam-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - Use @@ -199,8 +120,6 @@ - Create - Create Create Create Create diff --git a/3fd/isam/3fd-isam.vcxproj b/3fd/isam/3fd-isam.vcxproj index bee0e21..da50e30 100644 --- a/3fd/isam/3fd-isam.vcxproj +++ b/3fd/isam/3fd-isam.vcxproj @@ -15,19 +15,19 @@ {A5801D3E-0DC8-463C-8692-8E313237C9F6} Win32Proj My3fdisam - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/3fd/opencl/3fd-opencl.vcxproj b/3fd/opencl/3fd-opencl.vcxproj index abc454b..25daa83 100644 --- a/3fd/opencl/3fd-opencl.vcxproj +++ b/3fd/opencl/3fd-opencl.vcxproj @@ -15,19 +15,19 @@ {20634D79-4080-43D4-908C-AF47486F9851} Win32Proj My3fdopencl - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/3fd/rpc/3fd-rpc.vcxproj b/3fd/rpc/3fd-rpc.vcxproj index 5a85b66..3035eea 100644 --- a/3fd/rpc/3fd-rpc.vcxproj +++ b/3fd/rpc/3fd-rpc.vcxproj @@ -15,19 +15,19 @@ {116445B6-734A-437C-A4A6-B81C8FF32C93} Win32Proj My3fdrpc - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/3fd/sqlite/3fd-sqlite-winrt.vcxproj b/3fd/sqlite/3fd-sqlite-winrt.vcxproj index cf5f6c1..bfa6d27 100644 --- a/3fd/sqlite/3fd-sqlite-winrt.vcxproj +++ b/3fd/sqlite/3fd-sqlite-winrt.vcxproj @@ -1,18 +1,10 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -31,22 +23,11 @@ 10.0 - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false @@ -58,12 +39,6 @@ - - - - - - @@ -72,16 +47,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\ @@ -92,44 +57,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*sqlite-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*sqlite-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - Use @@ -175,8 +102,6 @@ - Create - Create Create Create diff --git a/3fd/sqlite/3fd-sqlite.vcxproj b/3fd/sqlite/3fd-sqlite.vcxproj index ce1f9b8..382ee50 100644 --- a/3fd/sqlite/3fd-sqlite.vcxproj +++ b/3fd/sqlite/3fd-sqlite.vcxproj @@ -15,19 +15,19 @@ {D7520E59-B89C-41C5-B49A-851A09AAE94A} Win32Proj My3fdsqlite - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/3fd/utils/3fd-utils-winrt.vcxproj b/3fd/utils/3fd-utils-winrt.vcxproj index fa74441..179d3d0 100644 --- a/3fd/utils/3fd-utils-winrt.vcxproj +++ b/3fd/utils/3fd-utils-winrt.vcxproj @@ -1,18 +1,10 @@  - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -31,22 +23,11 @@ 10.0 - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false @@ -58,12 +39,6 @@ - - - - - - @@ -72,16 +47,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\ @@ -92,44 +57,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*utils-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - - - - Use - false - true - $(SolutionDir);$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - stdcpp17 - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*utils-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - Use @@ -186,8 +113,6 @@ - Create - Create Create Create Create diff --git a/3fd/utils/3fd-utils.vcxproj b/3fd/utils/3fd-utils.vcxproj index bb48303..0f23d4f 100644 --- a/3fd/utils/3fd-utils.vcxproj +++ b/3fd/utils/3fd-utils.vcxproj @@ -41,19 +41,19 @@ {1DFEEA48-8DC4-498B-8332-56CDD8A4780A} Win32Proj My3fdutils - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode @@ -97,15 +97,18 @@ - copy $(ProjectDir)\cmdline.h $(SolutionDir)\install\include\3fd\utils\ + mkdir $(SolutionDir)\install\include\3fd\utils\ +copy $(ProjectDir)\cmdline.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\algorithms.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\concurrency.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\serialization.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\lockfreequeue.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\memory.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\string.h $(SolutionDir)\install\include\3fd\utils\ +copy $(ProjectDir)\text.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\winrt.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\xml.h $(SolutionDir)\install\include\3fd\utils\ +mkdir $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ copy $(TargetDir)\*utils.* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ @@ -135,15 +138,18 @@ copy $(TargetDir)\*utils.* $(SolutionDir)\install\lib\$(Platform)\$(Configuratio - copy $(ProjectDir)\cmdline.h $(SolutionDir)\install\include\3fd\utils\ + mkdir $(SolutionDir)\install\include\3fd\utils\ +copy $(ProjectDir)\cmdline.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\algorithms.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\concurrency.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\serialization.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\lockfreequeue.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\memory.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\string.h $(SolutionDir)\install\include\3fd\utils\ +copy $(ProjectDir)\text.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\winrt.h $(SolutionDir)\install\include\3fd\utils\ copy $(ProjectDir)\xml.h $(SolutionDir)\install\include\3fd\utils\ +mkdir $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ copy $(TargetDir)\*utils.* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ diff --git a/3fd/utils/cmdline.cpp b/3fd/utils/cmdline.cpp index 9a84848..ccc958b 100644 --- a/3fd/utils/cmdline.cpp +++ b/3fd/utils/cmdline.cpp @@ -1168,14 +1168,11 @@ namespace core *value = nullptr; int count(0); - const char *format(nullptr); + const char *format = (optionSign == CommandLineArguments::ArgOptionSign::Dash ? "-%c%n" : "/%c%n"); + const bool matchesSwitch = (sscanf(argument, format, &ch, &count) > 0 && argument[count] == 0); if (valSeparator == CommandLineArguments::ArgValSeparator::Space) - { - format = (optionSign == CommandLineArguments::ArgOptionSign::Dash ? "-%c%n" : "/%c%n"); - return sscanf(argument, format, &ch, &count) > 0 - && argument[count] == 0; - } + return matchesSwitch; switch (valSeparator) { @@ -1203,7 +1200,7 @@ namespace core return true; } - return false; + return matchesSwitch; } /// @@ -1227,30 +1224,33 @@ namespace core int count(0); int skip; + bool matchesSwitch; const char *format(nullptr); - if (valSeparator == CommandLineArguments::ArgValSeparator::Space) + if (optionSign == CommandLineArguments::ArgOptionSign::Dash) { - if (optionSign == CommandLineArguments::ArgOptionSign::Dash) - { - format = "--%*s%n"; - skip = 2; - } - else - { - format = "/%*s%n"; - skip = 1; - } - - if (sscanf(argument, format, &count) == 0 && argument[count] == 0) - { - *label = argument + skip; - return true; - } + format = "--%*s%n"; + skip = 2; + } + else + { + format = "/%*s%n"; + skip = 1; + } - return false; + if (sscanf(argument, format, &count) == 0 && argument[count] == 0) + { + *label = argument + skip; + matchesSwitch = true; + } + else + { + matchesSwitch = false; } + if (valSeparator == CommandLineArguments::ArgValSeparator::Space) + return matchesSwitch; + switch (optionSign) { case CommandLineArguments::ArgOptionSign::Dash: @@ -1277,7 +1277,7 @@ namespace core return true; } - return false; + return matchesSwitch; } /// diff --git a/3fd/utils/serialization.h b/3fd/utils/serialization.h index 0da24a1..e7aa9b3 100644 --- a/3fd/utils/serialization.h +++ b/3fd/utils/serialization.h @@ -32,24 +32,6 @@ namespace utils // Generic printf implementations //////////////////////////////////// - /* Depending on the output and whether format string is - of wide chars or not, the specialization of this template - functions will choose a suitable printf-like function */ - template - int xprintf(OutType output, const CharType *format, Args ... args) - { - #ifdef _MSC_VER - /* this compile-time assertion is triggered when there - is no specific implementation of printf-like function - fitting the provided arguments */ - static_assert(0, "this generic implementation must not compile"); - #else - // NOT IMPLEMENTED: - assert(false); - throw core::AppException("xprintf: overload not implemented!"); - #endif - } - template int xprintf(FILE *file, const char *format, Args ... args) { diff --git a/3fd/wws/3fd-wws.vcxproj b/3fd/wws/3fd-wws.vcxproj index 63cb6a5..ad316d9 100644 --- a/3fd/wws/3fd-wws.vcxproj +++ b/3fd/wws/3fd-wws.vcxproj @@ -15,19 +15,19 @@ {F1ABA45B-EFD8-4BCA-89A4-7C5AAF85687C} Win32Proj My3fdwws - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/IntegrationTests/CreateMsSqlSvcBrokerDB.sql b/IntegrationTests/CreateMsSqlSvcBrokerDB.sql index bf32281bc3b0e960502bac82d245e41710d7d750..0af7459bc89e29a2135dc038d437e28e170924da 100644 GIT binary patch delta 61 zcmX?Ra?WH!2Gis}OgfYMnDUqv7!)@DX9{J63dBqOl0yQiHOM> K%wdx&B>4cY>lDEN delta 53 zcmX?Sa?E5y1`{La{B288E7DC-4F10-4432-8CB9-2061400F4E0C} Win32Proj IntegrationTests - 10.0.17763.0 + 10.0 Application true - v141 + v143 Unicode Application false - v141 + v143 true Unicode @@ -180,6 +180,7 @@ copy "$(SolutionDir)TestShared\calculator.wsdl" "$(TargetDir)" Designer + diff --git a/IntegrationTests/IntegrationTests.vcxproj.filters b/IntegrationTests/IntegrationTests.vcxproj.filters index f71192a..0e7d745 100644 --- a/IntegrationTests/IntegrationTests.vcxproj.filters +++ b/IntegrationTests/IntegrationTests.vcxproj.filters @@ -69,6 +69,9 @@ Resource Files + + Resource Files + diff --git a/IntegrationTests/RestoreSvcBrokerDbForWin.sql b/IntegrationTests/RestoreSvcBrokerDbForWin.sql index 9efbe81543e1f89d78f113120c55e4fd19190cab..531b59ac6a409a161ca7fcdce174fb462dff1694 100644 GIT binary patch delta 120 zcmX@abcLDw|Gz|r9EK8xREDC7{>HHi48=fZ2?L1EWXNMk2TGj2!a3r diff --git a/IntegrationTests/UWP/IntegrationTestsApp.vcxproj b/IntegrationTests/UWP/IntegrationTestsApp.vcxproj index aebd615..05933d9 100644 --- a/IntegrationTests/UWP/IntegrationTestsApp.vcxproj +++ b/IntegrationTests/UWP/IntegrationTestsApp.vcxproj @@ -21,36 +21,19 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 - - Application - true - Application true - - Application - false - true - Application false @@ -59,12 +42,6 @@ - - - - - - @@ -75,14 +52,6 @@ IntegrationTestsApp_TemporaryKey.pfx - - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ - $(Platform)\$(Configuration)\UWP\ - - - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ - $(Platform)\$(Configuration)\UWP\ - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ $(Platform)\$(Configuration)\UWP\ @@ -91,38 +60,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ $(Platform)\$(Configuration)\UWP\ - - - /bigobj /await /permissive- - 4244;4453;28204 - $(SolutionDir);$(SolutionDir)TestShared;$(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - Level4 - false - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;TESTING;%(PreprocessorDefinitions) - - - Console - false - windowsapp.lib - - - - - /bigobj /await /permissive- - 4244;4453;28204 - $(SolutionDir);$(SolutionDir)TestShared;$(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - Level4 - false - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;TESTING;%(PreprocessorDefinitions) - - - Console - false - windowsapp.lib - - /bigobj /await /permissive- @@ -161,8 +98,6 @@ Document - true - true true true @@ -198,8 +133,6 @@ - Create - Create Create Create diff --git a/SvcBrokerTest.bak b/SvcBrokerTest.bak index 48b590041dc2be4fb02e3f7f00462925c055a5a3..debe3886002799b5cca7834fb4bffc1fc5f0f61a 100644 GIT binary patch delta 45237 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 Vyv0b{1MG)Uy*1i+uJ8@!{{UYHruP5< delta 106023 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 diff --git a/TestRpcClient/TestRpcClient.vcxproj b/TestRpcClient/TestRpcClient.vcxproj index baa589f..ea18c94 100644 --- a/TestRpcClient/TestRpcClient.vcxproj +++ b/TestRpcClient/TestRpcClient.vcxproj @@ -14,20 +14,20 @@ {6ADF3A4B-1E22-41BA-9293-96593E6A45BE} Win32Proj TestRpcClient - 10.0.17763.0 + 10.0 TestRpcClient Application true - v141 + v143 Unicode Application false - v141 + v143 true Unicode diff --git a/TestWwsClient/TestWwsClient.vcxproj b/TestWwsClient/TestWwsClient.vcxproj index fdfb166..e3905d5 100644 --- a/TestWwsClient/TestWwsClient.vcxproj +++ b/TestWwsClient/TestWwsClient.vcxproj @@ -14,19 +14,19 @@ {4913E097-136E-4BC4-BF8C-D3341FB1425A} Win32Proj TestWwsClient - 10.0.17763.0 + 10.0 Application true - v141 + v143 Unicode Application false - v141 + v143 true Unicode diff --git a/UnitTests/UWP/UnitTestsApp.vcxproj b/UnitTests/UWP/UnitTestsApp.vcxproj index 688f919..0fbc94f 100644 --- a/UnitTests/UWP/UnitTestsApp.vcxproj +++ b/UnitTests/UWP/UnitTestsApp.vcxproj @@ -21,36 +21,19 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 - - Application - true - Application true - - Application - false - true - Application false @@ -59,12 +42,6 @@ - - - - - - @@ -75,14 +52,6 @@ UnitTestsApp_TemporaryKey.pfx - - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ - $(Platform)\$(Configuration)\UWP\ - - - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ - $(Platform)\$(Configuration)\UWP\ - $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ $(Platform)\$(Configuration)\UWP\ @@ -91,44 +60,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\tests\$(ProjectName)\ $(Platform)\$(Configuration)\UWP\ - - - /bigobj /await /permissive- - 4018;4244;4267;4389;4453;28204 - $(SolutionDir);$(SolutionDir)TestShared;$(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - Level4 - false - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;TESTING;%(PreprocessorDefinitions) - pch.h - $(IntDir)$(TargetName).pch - - - Console - false - windowsapp.lib - - - - - - /bigobj /await /permissive- - 4018;4244;4267;4389;4453;28204 - $(SolutionDir);$(SolutionDir)TestShared;$(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - Level4 - false - stdcpp17 - ENABLE_3FD_CST;ENABLE_3FD_ERR_IMPL_DETAILS;_ENABLE_ATOMIC_ALIGNMENT_FIX;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;TESTING;%(PreprocessorDefinitions) - pch.h - $(IntDir)$(TargetName).pch - - - Console - false - windowsapp.lib - - - /bigobj /await /permissive- @@ -173,8 +104,6 @@ Document - true - true true true @@ -192,8 +121,6 @@ - Create - Create Create Create diff --git a/UnitTests/UnitTests.vcxproj b/UnitTests/UnitTests.vcxproj index 4b7204f..6e3b918 100644 --- a/UnitTests/UnitTests.vcxproj +++ b/UnitTests/UnitTests.vcxproj @@ -14,21 +14,21 @@ {A657480D-D083-4C31-B499-42FF50481AC1} Win32Proj UnitTests - 10.0.17763.0 + 10.0 Application true Unicode - v141 + v143 Application false true Unicode - v141 + v143 diff --git a/UnitTests/tests_utils_cmdline.cpp b/UnitTests/tests_utils_cmdline.cpp index 54a5a82..41a7f76 100644 --- a/UnitTests/tests_utils_cmdline.cpp +++ b/UnitTests/tests_utils_cmdline.cpp @@ -61,16 +61,110 @@ namespace unit_tests using _3fd::core::CommandLineArguments; + enum Sensitivity { CaseSensitive, CaseInsensitive }; + struct CommandLineParserTestParams { CommandLineArguments::ArgOptionSign optionSign; CommandLineArguments::ArgValSeparator valueSeparator; - std::vector args; - bool caseSensitive; + std::vector args; + Sensitivity sensitivity; + bool success = true; }; using Params = CommandLineParserTestParams; + class TestWithOneParamSwitch + : public ::testing::TestWithParam + { + }; + + /// + /// Tests parsing a single parameter which is a switch. + /// + TEST_P(TestWithOneParamSwitch, Parameterized) + { + auto params = GetParam(); + CommandLineArguments cmdLineArgs(120, + params.optionSign, + params.valueSeparator, + params.sensitivity == CaseSensitive); + + enum { ArgOptionSwitch }; + + cmdLineArgs.AddExpectedArgument( + CommandLineArguments::ArgDeclaration{ + ArgOptionSwitch, + CommandLineArguments::ArgType::OptionSwitch, + CommandLineArguments::ArgValType::None, + 's', "switch", + "just a switch that can be present or not" + } + ); + + + ListOfArguments args(params.args); + std::vector argsList = args.GetList(); + + bool status = cmdLineArgs.Parse(argsList.size() - 1, argsList.data()); + EXPECT_EQ(params.success ? STATUS_OKAY : STATUS_FAIL, status) << args.GetLine(); + + bool isPresent = cmdLineArgs.GetArgSwitchOptionValue(ArgOptionSwitch); + EXPECT_EQ(params.success, isPresent); + } + + INSTANTIATE_TEST_CASE_P(CommandLineParser, + TestWithOneParamSwitch, + ::testing::Values( + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-s" }, CaseSensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-S" }, CaseInsensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-x" }, CaseInsensitive, false }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--switch" }, CaseSensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--Switch" }, CaseInsensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--xxx" }, CaseInsensitive, false }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/s" }, CaseSensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/S" }, CaseInsensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/x" }, CaseInsensitive, false }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/switch" }, CaseSensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/Switch" }, CaseInsensitive, true }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/xxx" }, CaseInsensitive, false } + )); + class TestWithOneParamNumber : public ::testing::TestWithParam { @@ -83,9 +177,9 @@ namespace unit_tests { auto params = GetParam(); CommandLineArguments cmdLineArgs(120, - params.optionSign, - params.valueSeparator, - params.caseSensitive); + params.optionSign, + params.valueSeparator, + params.sensitivity == CaseSensitive); enum { ArgValFloatWithinRange }; @@ -107,7 +201,7 @@ namespace unit_tests float number; } expected, actual; - std::vector args; + std::vector args; } test; ListOfArguments args(params.args); @@ -131,72 +225,72 @@ namespace unit_tests } INSTANTIATE_TEST_CASE_P(CommandLineParser, - TestWithOneParamNumber, - ::testing::Values( - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-n:0.5" }, true }, + TestWithOneParamNumber, + ::testing::Values( + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-n:0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "-n=0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-n=0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "-n", "0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "-n", "0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-N:0.5" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-N:0.5" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--number:0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--number:0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "--number=0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--number=0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "--number", "0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "--number", "0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--Number:0.5" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--Number:0.5" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/n:0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/n:0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/n=0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/n=0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/n", "0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/n", "0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/N:0.5" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/N:0.5" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/number:0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/number:0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/number=0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/number=0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/number", "0.5" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/number", "0.5" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/Number:0.5" }, false } - )); + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/Number:0.5" }, CaseInsensitive } + )); class TestWithOneParamEnumOptions : public ::testing::TestWithParam @@ -210,9 +304,9 @@ namespace unit_tests { auto params = GetParam(); CommandLineArguments cmdLineArgs(120, - params.optionSign, - params.valueSeparator, - params.caseSensitive); + params.optionSign, + params.valueSeparator, + params.sensitivity == CaseSensitive); enum { ArgValFromEnumStrOptions }; @@ -222,16 +316,16 @@ namespace unit_tests CommandLineArguments::ArgValType::EnumString, 'o', "option", "an option from a list of possible strings" - }, { "option1", "option2" }); + }, { "option1", "option2" }); struct { struct { - const char *chosenOption; + const char* chosenOption; } expected, actual; - std::vector args; + std::vector args; } test; ListOfArguments args(params.args); @@ -255,72 +349,72 @@ namespace unit_tests } INSTANTIATE_TEST_CASE_P(CommandLineParser, - TestWithOneParamEnumOptions, - ::testing::Values( - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-o:option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "-o=option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "-o", "option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-O:option1" }, false }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--option:option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "--option=option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "--option", "option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--Option:option1" }, false }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/o:option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/o=option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/o", "option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/O=option1" }, false }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/option:option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/option=option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/option", "option1" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/Option=option1" }, false } - )); + TestWithOneParamEnumOptions, + ::testing::Values( + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-o:option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-o=option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "-o", "option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-O:option1" }, CaseInsensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--option:option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--option=option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "--option", "option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--Option:option1" }, CaseInsensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/o:option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/o=option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/o", "option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/O=option1" }, CaseInsensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/option:option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/option=option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/option", "option1" }, CaseSensitive }, + + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/Option=option1" }, CaseInsensitive } + )); class TestWithListOfValues : public ::testing::TestWithParam @@ -334,9 +428,9 @@ namespace unit_tests { auto params = GetParam(); CommandLineArguments cmdLineArgs(120, - params.optionSign, - params.valueSeparator, - params.caseSensitive); + params.optionSign, + params.valueSeparator, + params.sensitivity == CaseSensitive); enum { ArgValsListOfStrings }; @@ -346,16 +440,16 @@ namespace unit_tests CommandLineArguments::ArgValType::String, 0, "name1 name2", "list with two names" - }, { (uint16_t)2, (uint16_t)2 }); + }, { (uint16_t)2, (uint16_t)2 }); struct { struct { - std::vector names; + std::vector names; } expected, actual; - std::vector args; + std::vector args; } test; ListOfArguments args(params.args); @@ -380,32 +474,32 @@ namespace unit_tests } INSTANTIATE_TEST_CASE_P(CommandLineParser, - TestWithListOfValues, - ::testing::Values( - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "ping", "pong" }, true }, + TestWithListOfValues, + ::testing::Values( + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "ping", "pong" }, false } - )); + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "ping", "pong" }, CaseInsensitive } + )); class TestWithSeveralArgumentTypes : public ::testing::TestWithParam @@ -419,15 +513,26 @@ namespace unit_tests { auto params = GetParam(); CommandLineArguments cmdLineArgs(120, - params.optionSign, - params.valueSeparator, - params.caseSensitive); + params.optionSign, + params.valueSeparator, + params.sensitivity == CaseSensitive); enum { - ArgValFromEnumStrOptions, ArgValFloatWithinRange, ArgValsListOfStrings + ArgOptionSwitch, + ArgValFromEnumStrOptions, + ArgValFloatWithinRange, + ArgValsListOfStrings }; + cmdLineArgs.AddExpectedArgument(CommandLineArguments::ArgDeclaration{ + ArgOptionSwitch, + CommandLineArguments::ArgType::OptionSwitch, + CommandLineArguments::ArgValType::None, + 's', "switch", + "just a switch" + }); + cmdLineArgs.AddExpectedArgument(CommandLineArguments::ArgDeclaration{ ArgValFromEnumStrOptions, CommandLineArguments::ArgType::OptionWithReqValue, @@ -483,7 +588,9 @@ namespace unit_tests FAIL(); } - bool isPresent; + bool isPresent = cmdLineArgs.GetArgSwitchOptionValue(ArgOptionSwitch); + EXPECT_TRUE(isPresent); + test.actual.chosenOption = cmdLineArgs.GetArgValueString(ArgValFromEnumStrOptions, isPresent); EXPECT_TRUE(isPresent); EXPECT_STREQ(test.expected.chosenOption, test.actual.chosenOption); @@ -499,106 +606,102 @@ namespace unit_tests EXPECT_STREQ(test.expected.names[idx], test.actual.names[idx]); } - INSTANTIATE_TEST_CASE_P(CommandLineParser, - TestWithSeveralArgumentTypes, - ::testing::Values( - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-o:option1", "-n:0.5", "ping", "pong" }, true }, - - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "-O:option1", "-N:0.5", "ping", "pong" }, false }, + INSTANTIATE_TEST_CASE_P(CommandLineParser, TestWithSeveralArgumentTypes, ::testing::Values( + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-s", "-o:option1", "-n:0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "-o=option1", "-n=0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "-S", "-O:option1", "-N:0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "-O=option1", "-N=0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-s", "-o=option1", "-n=0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "-o", "option1", "-n", "0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "-S", "-O=option1", "-N=0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "-O", "option1", "-N", "0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "-s", "-o", "option1", "-n", "0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--option:option1", "--number:0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "-S", "-O", "option1", "-N", "0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "--Option:option1", "--Number:0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--switch", "--option:option1", "--number:0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "--option=option1", "--number=0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "--Switch", "--Option:option1", "--Number:0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "--Option=option1", "--Number=0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--switch", "--option=option1", "--number=0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "--option", "option1", "--number", "0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "--Switch", "--Option=option1", "--Number=0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Dash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "--Option", "option1", "--Number", "0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "--switch", "--option", "option1", "--number", "0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/o:option1", "/n:0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Dash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "--Switch", "--Option", "option1", "--Number", "0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/O:option1", "/N:0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/s", "/o:option1", "/n:0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/o=option1", "/n=0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/S", "/O:option1", "/N:0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/O=option1", "/N=0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/s", "/o=option1", "/n=0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/o", "option1", "/n", "0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/S", "/O=option1", "/N=0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/O", "option1", "/N", "0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/s", "/o", "option1", "/n", "0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/option:option1", "/number:0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/S", "/O", "option1", "/N", "0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Colon, - { "program.exe", "/Option:option1", "/Number:0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/switch", "/option:option1", "/number:0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/option=option1", "/number=0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Colon, + { "program.exe", "/Switch", "/Option:option1", "/Number:0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::EqualSign, - { "program.exe", "/Option=option1", "/Number=0.5", "ping", "pong" }, false }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/switch", "/option=option1", "/number=0.5", "ping", "pong" }, CaseSensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/option", "option1", "/number", "0.5", "ping", "pong" }, true }, + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::EqualSign, + { "program.exe", "/Switch", "/Option=option1", "/Number=0.5", "ping", "pong" }, CaseInsensitive }, - Params{ CommandLineArguments::ArgOptionSign::Slash, - CommandLineArguments::ArgValSeparator::Space, - { "program.exe", "/Option", "option1", "/Number", "0.5", "ping", "pong" }, false } + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/switch", "/option", "option1", "/number", "0.5", "ping", "pong" }, CaseSensitive }, - )); + Params{ CommandLineArguments::ArgOptionSign::Slash, + CommandLineArguments::ArgValSeparator::Space, + { "program.exe", "/Switch", "/Option", "option1", "/Number", "0.5", "ping", "pong" }, CaseInsensitive })); } // end of namespace unit_tests } // end of namespace _3fd \ No newline at end of file diff --git a/gtest/msvc/gtest-md.vcxproj b/gtest/msvc/gtest-md.vcxproj index a96603f..db4d0ec 100644 --- a/gtest/msvc/gtest-md.vcxproj +++ b/gtest/msvc/gtest-md.vcxproj @@ -13,17 +13,17 @@ {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} Win32Proj - 10.0.17763.0 + 10.0 StaticLibrary - v141 + v143 MultiByte StaticLibrary - v141 + v143 MultiByte @@ -41,9 +41,11 @@ $(SolutionDir)$(Platform)\$(Configuration)\tests\ + gtest $(SolutionDir)$(Platform)\$(Configuration)\tests\ + gtest diff --git a/gtest/msvc/gtest-winrt.vcxproj b/gtest/msvc/gtest-winrt.vcxproj index d9e3b8d..c4efefd 100644 --- a/gtest/msvc/gtest-winrt.vcxproj +++ b/gtest/msvc/gtest-winrt.vcxproj @@ -1,18 +1,10 @@  - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -31,22 +23,11 @@ 10.0 - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false @@ -58,12 +39,6 @@ - - - - - - @@ -72,16 +47,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\tests\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\tests\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\tests\ @@ -92,34 +57,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\tests\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - $(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - stdcpp14 - - - Console - false - false - - - - - Use - false - true - $(SolutionDir)gtest\include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) - stdcpp14 - - - Console - false - false - - Use @@ -155,18 +92,12 @@ - ..;..\include;%(AdditionalIncludeDirectories) ..;..\include;%(AdditionalIncludeDirectories) - ..;..\include;%(AdditionalIncludeDirectories) ..;..\include;%(AdditionalIncludeDirectories) - NotUsing NotUsing - NotUsing NotUsing - Create - Create Create Create diff --git a/nanodbc/nanodbc.vcxproj b/nanodbc/nanodbc.vcxproj index d1a583e..182c9cd 100644 --- a/nanodbc/nanodbc.vcxproj +++ b/nanodbc/nanodbc.vcxproj @@ -21,19 +21,19 @@ {D0320193-9A05-410F-A52E-049638FAA95E} Win32Proj nanodbc - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode diff --git a/sqlite3/sqlite3-winrt.vcxproj b/sqlite3/sqlite3-winrt.vcxproj index 27dad03..f8edf3e 100644 --- a/sqlite3/sqlite3-winrt.vcxproj +++ b/sqlite3/sqlite3-winrt.vcxproj @@ -1,18 +1,10 @@ - - Debug - ARM - Debug x64 - - Release - ARM - Release x64 @@ -20,9 +12,7 @@ - NotUsing NotUsing - NotUsing NotUsing @@ -43,22 +33,11 @@ sqlite3-winrt - - StaticLibrary - true - v141 - StaticLibrary true v141 - - StaticLibrary - false - true - v141 - StaticLibrary false @@ -70,12 +49,6 @@ - - - - - - @@ -84,16 +57,6 @@ - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - - - false - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\UWP\ - false $(SolutionDir)$(Platform)\$(Configuration)\ @@ -104,40 +67,6 @@ $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\UWP\ - - - Use - false - true - SQLITE_OS_WINRT=1;%(PreprocessorDefinitions) - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*sqlite3-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - - - - Use - false - true - SQLITE_OS_WINRT=1;%(PreprocessorDefinitions) - 4018;4244;4267;4290;4482 - - - Console - false - false - - - copy $(TargetDir)\*sqlite3-winrt* $(SolutionDir)\install\lib\$(Platform)\$(Configuration)\ - - Use diff --git a/sqlite3/sqlite3.vcxproj b/sqlite3/sqlite3.vcxproj index 14c11ff..ba1f367 100644 --- a/sqlite3/sqlite3.vcxproj +++ b/sqlite3/sqlite3.vcxproj @@ -24,19 +24,19 @@ {AB6D8426-4117-409C-A863-3D1A98C27150} Win32Proj sqlite3 - 10.0.17763.0 + 10.0 StaticLibrary true - v141 + v143 Unicode StaticLibrary false - v141 + v143 true Unicode