From cf49027353d0092faad6bead951ca3436e82ccbc Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Fri, 3 Jul 2026 08:37:38 +1200 Subject: [PATCH] Add libmtp support to the MSVC build. Add support for building with WPD. Three improvements to the libmtp property-group block: 1. Guard the Exists() check with '$(VCPKG_ROOT)'!='' so that an unset VCPKG_ROOT does not cause MSBuild to evaluate Exists('\installed\x64-windows\include\libmtp.h') against the drive root. 2. Fold the Win32 platform restriction directly into the enable condition instead of overwriting EnableLibmtp in a separate element, which was confusing due to MSBuild property-evaluation order. 3. Make LibmtpLibDirs configuration-aware: Debug builds use the vcpkg debug lib directory (installed\x64-windows\debug\lib), Release builds use the release lib directory (installed\x64-windows\lib). Previously Debug|x64 always linked against the release import library. Also add a short comment explaining why the Windows SDK system libraries (ole32, portabledeviceguids, propsys) are listed explicitly. Signed-off-by: Michael Keller --- .gitignore | 2 ++ contrib/msvc/libdivecomputer.vcxproj | 42 +++++++++++++++++++--------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 4ddf6072..bce5b9b9 100644 --- a/.gitignore +++ b/.gitignore @@ -59,5 +59,7 @@ Makefile.in /build +/.vscode/ + # Artifact produced by the Subsurface MSVC build /contrib/msvc/x64/ diff --git a/contrib/msvc/libdivecomputer.vcxproj b/contrib/msvc/libdivecomputer.vcxproj index 118b9d49..6141fda5 100644 --- a/contrib/msvc/libdivecomputer.vcxproj +++ b/contrib/msvc/libdivecomputer.vcxproj @@ -1,4 +1,4 @@ - + @@ -66,6 +66,18 @@ + + + true + false + HAVE_LIBMTP; + $(VCPKG_ROOT)\installed\x64-windows\include; + + libmtp.lib;ole32.lib;portabledeviceguids.lib;propsys.lib; + $(VCPKG_ROOT)\installed\x64-windows\debug\lib; + $(VCPKG_ROOT)\installed\x64-windows\lib; + true $(SolutionDir)$(PlatformTarget)\$(Configuration)\bin\ @@ -89,14 +101,15 @@ Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions) + ..\..\include;$(LibmtpIncludes)%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;$(LibmtpPreprocessor)%(PreprocessorDefinitions) Level3 true - ws2_32.lib;%(AdditionalDependencies) + ws2_32.lib;$(LibmtpLibs)%(AdditionalDependencies) + $(LibmtpLibDirs)%(AdditionalLibraryDirectories) $(OutDir)libdivecomputer.def true Windows @@ -108,15 +121,16 @@ Disabled - ..\..\include;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions) + ..\..\include;$(LibmtpIncludes)%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;$(LibmtpPreprocessor)%(PreprocessorDefinitions) Level3 true - ws2_32.lib;%(AdditionalDependencies) + ws2_32.lib;$(LibmtpLibs)%(AdditionalDependencies) + $(LibmtpLibDirs)%(AdditionalLibraryDirectories) $(OutDir)libdivecomputer.def true Windows @@ -129,15 +143,16 @@ MaxSpeed true - ..\..\include;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions) + ..\..\include;$(LibmtpIncludes)%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;$(LibmtpPreprocessor)%(PreprocessorDefinitions) true Level3 true - ws2_32.lib;%(AdditionalDependencies) + ws2_32.lib;$(LibmtpLibs)%(AdditionalDependencies) + $(LibmtpLibDirs)%(AdditionalLibraryDirectories) $(OutDir)libdivecomputer.def true Windows @@ -152,8 +167,8 @@ MaxSpeed true - ..\..\include;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions) + ..\..\include;$(LibmtpIncludes)%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_VERSION_SUFFIX;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;$(LibmtpPreprocessor)%(PreprocessorDefinitions) true @@ -161,7 +176,8 @@ true - ws2_32.lib;%(AdditionalDependencies) + ws2_32.lib;$(LibmtpLibs)%(AdditionalDependencies) + $(LibmtpLibDirs)%(AdditionalLibraryDirectories) $(OutDir)libdivecomputer.def true Windows