marcin-krystianc opened a new issue, #49499: URL: https://github.com/apache/arrow/issues/49499
### Describe the bug, including details regarding any error messages, version, and platform. When consuming Arrow via vcpkg with a multi-config CMake generator (Visual Studio) and a static triplet (`x64-windows-static`), Release builds link against debug versions of Snappy and Brotli. This causes LNK2038 (`_ITERATOR_DEBUG_LEVEL` / `RuntimeLibrary` mismatch) errors. ### Steps to reproduce - Download [arrow-vcpkg-issue.zip](https://github.com/user-attachments/files/25919827/arrow-vcpkg-issue.zip) - Run the `repro.ps1`. - See the error: ``` Project "D:\workspace\arrow-vcpkg-issue\build\arrow_vcpkg_repro.sln" on node 1 (repro:Rebuild target(s)). ValidateSolutionConfiguration: Building solution configuration "Release|x64". ValidateProjects: The project "ALL_BUILD" is not selected for building in solution configuration "Release|x64". Project "D:\workspace\arrow-vcpkg-issue\build\arrow_vcpkg_repro.sln" (1) is building "D:\workspace\arrow-vcpkg-issue\build\ repro.vcxproj.metaproj" (2) on node 1 (Rebuild target(s)). Project "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj.metaproj" (2) is building "D:\workspace\arrow-vcpkg-issue\build \ZERO_CHECK.vcxproj" (3) on node 1 (Rebuild target(s)). CoreClean: Creating directory "x64\Release\ZERO_CHECK\". PrepareForBuild: Structured output is enabled. The formatting of compiler diagnostics will reflect the error hierarchy. See https://aka.ms /cpp/structured-output for more details. Creating directory "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\". InitializeBuildStatus: Creating "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified. Touching "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild". CustomBuild: 1>Checking Build System FinalizeBuildStatus: Deleting file "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild". Touching "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate". Done Building Project "D:\workspace\arrow-vcpkg-issue\build\ZERO_CHECK.vcxproj" (Rebuild target(s)). Project "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj.metaproj" (2) is building "D:\workspace\arrow-vcpkg-issue\build \repro.vcxproj" (4) on node 1 (Rebuild target(s)). CoreClean: Creating directory "repro.dir\Release\". PrepareForBuild: Structured output is enabled. The formatting of compiler diagnostics will reflect the error hierarchy. See https://aka.ms /cpp/structured-output for more details. Creating directory "D:\workspace\arrow-vcpkg-issue\build\Release\". Creating directory "repro.dir\Release\repro.tlog\". InitializeBuildStatus: Creating "repro.dir\Release\repro.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified. Touching "repro.dir\Release\repro.tlog\unsuccessfulbuild". CustomBuild: Building Custom Rule D:/workspace/arrow-vcpkg-issue/CMakeLists.txt ClCompile: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\CL.exe /c /nologo /W1 / WX- /diagnostics:column /O2 /Ob2 /D _WINDLL /D _MBCS /D WIN32 /D _WINDOWS /D NDEBUG /D ARROW_STATIC /D PARQUET_STATIC /D ARROW_FLIGHT_STATIC /D ARROW_FLIGHT_SQL_STATIC /D "CMAKE_INTDIR=\"Release\"" /D repro_EXPORTS /Gm- /EHsc /MT /GS /fp:prec ise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++20 /Fo"repro.dir\Release\\" /Fd"repro.dir\Release\vc143.pdb" /external:W0 /Gd /TP /errorReport:queue /external:I "D:/workspace/arrow-vcpkg-issue/build/vcpkg_installed/x64-windows-static/include " "D:\workspace\arrow-vcpkg-issue\repro.cpp" repro.cpp Link: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\link.exe /ERRORREPORT:Q UEUE /OUT:"D:\workspace\arrow-vcpkg-issue\build\Release\repro.dll" /INCREMENTAL:NO /NOLOGO "vcpkg_installed\x64-windows-s tatic\lib\parquet.lib" "vcpkg_installed\x64-windows-static\lib\arrow.lib" "vcpkg_installed\x64-windows-static\debug\lib\b rotlienc.lib" "vcpkg_installed\x64-windows-static\debug\lib\brotlidec.lib" "vcpkg_installed\x64-windows-static\debug\lib\ brotlicommon.lib" "vcpkg_installed\x64-windows-static\lib\bz2.lib" "vcpkg_installed\x64-windows-static\lib\lz4.lib" "vcpk g_installed\x64-windows-static\debug\lib\snappy.lib" "vcpkg_installed\x64-windows-static\lib\zlib.lib" "vcpkg_installed\x 64-windows-static\lib\zstd.lib" "vcpkg_installed\x64-windows-static\lib\thriftmd.lib" "vcpkg_installed\x64-windows-static \lib\libssl.lib" "vcpkg_installed\x64-windows-static\lib\libcrypto.lib" crypt32.lib ws2_32.lib kernel32.lib user32.lib gd i32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level= 'asInvoker' uiAccess='false'" /manifest:embed /PDB:"D:/workspace/arrow-vcpkg-issue/build/Release/repro.pdb" /SUBSYSTEM:CO NSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:/workspace/arrow-vcpkg-issue/build/Release/repro.lib" /MACHINE:X64 /mac hine:x64 /DLL repro.dir\Release\repro.obj snappy.lib(snappy.cc.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in repro.obj [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] snappy.lib(snappy.cc.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match va lue 'MT_StaticRelease' in repro.obj [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] Creating library D:/workspace/arrow-vcpkg-issue/build/Release/repro.lib and object D:/workspace/arrow-vcpkg-issue/buil d/Release/repro.exp LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library [D:\workspace\arro w-vcpkg-issue\build\repro.vcxproj] snappy.lib(snappy.cc.obj) : error LNK2019: unresolved external symbol _CrtDbgReport referenced in function "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned __int64)" (??$_Allocate_manually_vect or_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z) [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] D:\workspace\arrow-vcpkg-issue\build\Release\repro.dll : fatal error LNK1120: 1 unresolved externals [D:\workspace\arrow-vc pkg-issue\build\repro.vcxproj] Done Building Project "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj" (Rebuild target(s)) -- FAILED. Done Building Project "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj.metaproj" (Rebuild target(s)) -- FAILED. Done Building Project "D:\workspace\arrow-vcpkg-issue\build\arrow_vcpkg_repro.sln" (repro:Rebuild target(s)) -- FAILED. Build FAILED. "D:\workspace\arrow-vcpkg-issue\build\arrow_vcpkg_repro.sln" (repro:Rebuild target) (1) -> "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj.metaproj" (Rebuild target) (2) -> "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj" (Rebuild target) (4) -> (Link target) -> LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library [D:\workspace\ar row-vcpkg-issue\build\repro.vcxproj] "D:\workspace\arrow-vcpkg-issue\build\arrow_vcpkg_repro.sln" (repro:Rebuild target) (1) -> "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj.metaproj" (Rebuild target) (2) -> "D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj" (Rebuild target) (4) -> (Link target) -> snappy.lib(snappy.cc.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value ' 0' in repro.obj [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] snappy.lib(snappy.cc.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MT_StaticRelease' in repro.obj [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] snappy.lib(snappy.cc.obj) : error LNK2019: unresolved external symbol _CrtDbgReport referenced in function "void * __cdec l std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned __int64)" (??$_Allocate_manually_ve ctor_aligned@U_Default_allocate_traits@std@@@std@@YAPEAX_K@Z) [D:\workspace\arrow-vcpkg-issue\build\repro.vcxproj] D:\workspace\arrow-vcpkg-issue\build\Release\repro.dll : fatal error LNK1120: 1 unresolved externals [D:\workspace\arrow- vcpkg-issue\build\repro.vcxproj] ``` ### Expected behavior Release builds should link against release libraries. The vcpkg-installed Snappy and Brotli packages provide proper per-configuration CMake targets (`IMPORTED_LOCATION_DEBUG` / `IMPORTED_LOCATION_RELEASE`). Arrow's find modules should use them. ### Environment - Arrow 23.0.1 - vcpkg with `x64-windows-static` triplet= - Windows x64 ### Remarks The problem is related (at least partially) to the changes from https://github.com/apache/arrow/pull/46467. It seems that `ARROW_VCPKG` is empty instead of the expected "ON" value. ### Component(s) Packaging -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
