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]

Reply via email to