conda-forge / libignition-gazebo-feedstock

A conda-smithy repository for libignition-gazebo.
BSD 3-Clause "New" or "Revised" License
4 stars 4 forks source link

Downstream projects on Windows fail as zlib.dll is linked instead of zlib.lib #30

Closed traversaro closed 2 years ago

traversaro commented 2 years ago

I am building an example project of ignition-gazebo (https://github.com/ignitionrobotics/ign-gazebo/tree/ign-gazebo5/examples/standalone/custom_server, but patching out the Linux if), and compilation fails with:

FAILED: custom_server.exe
cmd.exe /C "cd . && C:\Users\STraversaro\AppData\Local\mambaforge\envs\ign-gazebo\Library\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\custom_server.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MIB055~1\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\custom_server.rsp  /out:custom_server.exe /implib:custom_server.lib /pdb:custom_server.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console  && cd ."
LINK: command "C:\PROGRA~2\MIB055~1\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\custom_server.rsp /out:custom_server.exe /implib:custom_server.lib /pdb:custom_server.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console /MANIFEST /MANIFESTFILE:custom_server.exe.manifest" failed (exit code 1107) with the following output:
C:\Users\STraversaro\AppData\Local\mambaforge\envs\ign-gazebo\zlib.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x300
ninja: build stopped: subcommand failed.

It seems that zlib.dll instead of zlib.lib is found at the CMake level:

(ign-gazebo) C:\src\ign-gazebo\examples\standalone\custom_server\build\build>cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX%\Library ..\..
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The C compiler identification is MSVC 19.29.30133.0
-- The CXX compiler identification is MSVC 19.29.30133.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for ignition-gazebo6 -- found version 6.0.0
-- Searching for dependencies of ignition-gazebo6
-- Looking for ignition-math6 -- found version 6.9.2
-- Searching for dependencies of ignition-math6
-- Looking for ignition-utils1 -- found version 1.1.0
-- Searching for dependencies of ignition-utils1
-- Looking for ignition-plugin1 -- found version 1.2.1
-- Searching for dependencies of ignition-plugin1
-- Searching for <ignition-plugin1> component [loader]
-- Looking for ignition-plugin1-loader -- found version 1.2.1
-- Searching for dependencies of ignition-plugin1-loader
-- Searching for <ignition-plugin1> component [register]
-- Looking for ignition-plugin1-register -- found version 1.2.1
-- Searching for dependencies of ignition-plugin1-register
-- Looking for ignition-transport11 -- found version 11.0.0
-- Searching for dependencies of ignition-transport11
-- Found ZLIB: C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/zlib.dll (found version "1.2.11")
-- Looking for ignition-utils1 -- found version 1.1.0
-- Searching for dependencies of ignition-utils1
-- Searching for <ignition-utils1> component [cli]
-- Looking for ignition-utils1-cli -- found version 1.1.0
-- Searching for dependencies of ignition-utils1-cli
-- Looking for ignition-msgs8 -- found version 8.0.0
-- Searching for dependencies of ignition-msgs8
-- Looking for ignition-math6 -- found version 6.9.2
-- Checking for module 'tinyxml2'
--   Found tinyxml2, version 9.0.0
-- Searching for <ignition-transport11> component [log]
-- Looking for ignition-transport11-log -- found version 11.0.0
-- Searching for dependencies of ignition-transport11-log
-- Looking for ignition-msgs8 -- found version 8.0.0
-- Looking for ignition-common4 -- found version 4.4.0
-- Searching for dependencies of ignition-common4
-- Found DL: TRUE
-- Searching for <ignition-common4> component [profiler]
-- Looking for ignition-common4-profiler -- found version 4.4.0
-- Searching for dependencies of ignition-common4-profiler
-- Searching for <ignition-common4> component [events]
-- Looking for ignition-common4-events -- found version 4.4.0
-- Searching for dependencies of ignition-common4-events
-- Looking for ignition-math6 -- found version 6.9.2
-- Searching for <ignition-common4> component [av]
-- Looking for ignition-common4-av -- found version 4.4.0
-- Searching for dependencies of ignition-common4-av
-- Checking for module 'libswscale'
--   No package 'libswscale' found
-- Found SWSCALE: TRUE
-- Checking for module 'libavdevice >= 56.4.100'
--   No package 'libavdevice' found
-- Found AVDEVICE: TRUE (Required is at least version "56.4.100")
-- Checking for module 'libavformat'
--   No package 'libavformat' found
-- Found AVFORMAT: TRUE
-- Checking for module 'libavcodec'
--   No package 'libavcodec' found
-- Found AVCODEC: TRUE
-- Checking for module 'libavutil'
--   No package 'libavutil' found
-- Found AVUTIL: TRUE
-- Looking for ignition-fuel_tools7 -- found version 7.0.0
-- Searching for dependencies of ignition-fuel_tools7
-- Found CURL: C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/lib/libcurl.lib (found version "7.79.1")
-- Checking for module 'jsoncpp'
--   Found jsoncpp, version
-- Found JSONCPP: TRUE
-- Checking for module 'libzip'
--   Found libzip, version 1.8.0
-- Found ZIP: TRUE
-- Looking for ignition-common4 -- found version 4.4.0
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-msgs8 -- found version 8.0.0
-- Looking for ignition-gui6 -- found version 6.0.0
-- Searching for dependencies of ignition-gui6
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-common4 -- found version 4.4.0
-- Looking for ignition-plugin1 -- found version 1.2.1
-- Looking for ignition-transport11 -- found version 11.0.0
-- Looking for ignition-rendering6 -- found version 6.0.1
-- Searching for dependencies of ignition-rendering6
-- Looking for ignition-math6 -- found version 6.9.2
-- Searching for dependencies of ignition-math6
-- Searching for <ignition-math6> component [eigen3]
-- Looking for ignition-math6-eigen3 -- found version 6.9.2
-- Searching for dependencies of ignition-math6-eigen3
-- Looking for ignition-common4 -- found version 4.4.0
-- Searching for dependencies of ignition-common4
-- Searching for <ignition-common4> component [graphics]
-- Looking for ignition-common4-graphics -- found version 4.4.0
-- Searching for dependencies of ignition-common4-graphics
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-utils1 -- found version 1.1.0
-- Searching for <ignition-common4> component [events]
-- Looking for ignition-plugin1 -- found version 1.2.1
-- Searching for dependencies of ignition-plugin1
-- Searching for <ignition-plugin1> component [all]
-- Looking for all libraries of ignition-plugin1 -- found version 1.2.1
-- Looking for ignition-plugin1 -- found version 1.2.1
-- Searching for <ignition-rendering6> component [ogre]
-- Looking for ignition-rendering6-ogre -- found version 6.0.1
-- Searching for dependencies of ignition-rendering6-ogre
-- Found OpenGL: opengl32
-- Looking for ignition-msgs8 -- found version 8.0.0
-- Looking for ignition-physics5 -- found version 5.0.0
-- Searching for dependencies of ignition-physics5
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-plugin1 -- found version 1.2.1
-- Looking for ignition-utils1 -- found version 1.1.0
-- Searching for <ignition-physics5> component [heightmap]
-- Looking for ignition-physics5-heightmap -- found version 5.0.0
-- Searching for dependencies of ignition-physics5-heightmap
-- Looking for ignition-common4 -- found version 4.4.0
-- Searching for <ignition-physics5> component [mesh]
-- Looking for ignition-physics5-mesh -- found version 5.0.0
-- Searching for dependencies of ignition-physics5-mesh
-- Looking for ignition-common4 -- found version 4.4.0
-- Searching for <ignition-physics5> component [sdf]
-- Looking for ignition-physics5-sdf -- found version 5.0.0
-- Searching for dependencies of ignition-physics5-sdf
-- Looking for ignition-sensors6 -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-common4 -- found version 4.4.0
-- Looking for ignition-transport11 -- found version 11.0.0
-- Looking for ignition-rendering6 -- found version 6.0.1
-- Looking for ignition-msgs8 -- found version 8.0.0
-- Searching for <ignition-sensors6> component [air_pressure]
-- Looking for ignition-sensors6-air_pressure -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-air_pressure
-- Searching for <ignition-sensors6> component [altimeter]
-- Looking for ignition-sensors6-altimeter -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-altimeter
-- Searching for <ignition-sensors6> component [imu]
-- Looking for ignition-sensors6-imu -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-imu
-- Searching for <ignition-sensors6> component [force_torque]
-- Looking for ignition-sensors6-force_torque -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-force_torque
-- Searching for <ignition-sensors6> component [logical_camera]
-- Looking for ignition-sensors6-logical_camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-logical_camera
-- Searching for <ignition-sensors6> component [magnetometer]
-- Looking for ignition-sensors6-magnetometer -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-magnetometer
-- Searching for <ignition-sensors6> component [rendering]
-- Looking for ignition-sensors6-rendering -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-rendering
-- Searching for <ignition-sensors6> component [lidar]
-- Looking for ignition-sensors6-lidar -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-lidar
-- Searching for <ignition-sensors6> component [gpu_lidar]
-- Looking for ignition-sensors6-gpu_lidar -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-gpu_lidar
-- Searching for <ignition-sensors6> component [camera]
-- Looking for ignition-sensors6-camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-camera
-- Searching for <ignition-sensors6> component [segmentation_camera]
-- Looking for ignition-sensors6-segmentation_camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-segmentation_camera
-- Searching for <ignition-sensors6> component [depth_camera]
-- Looking for ignition-sensors6-depth_camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-depth_camera
-- Searching for <ignition-sensors6> component [rgbd_camera]
-- Looking for ignition-sensors6-rgbd_camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-rgbd_camera
-- Searching for <ignition-sensors6> component [thermal_camera]
-- Looking for ignition-sensors6-thermal_camera -- found version 6.0.0
-- Searching for dependencies of ignition-sensors6-thermal_camera
-- Looking for ignition-rendering6 -- found version 6.0.1
-- Looking for ignition-math6 -- found version 6.9.2
-- Looking for ignition-utils1 -- found version 1.1.0
-- Configuring done
-- Generating done
-- Build files have been written to: C:/src/ign-gazebo/examples/standalone/custom_server/build/build


Environment (conda list):

``` $ conda list (ign-gazebo) C:\src\ign-gazebo\examples\standalone\custom_server\build\build>conda list # packages in environment at C:\Users\STraversaro\AppData\Local\mambaforge\envs\ign-gazebo: # # Name Version Build Channel assimp 5.0.1 hc2aa0de_6 conda-forge boost-cpp 1.74.0 h5b4e17d_4 conda-forge bullet-cpp 3.17 h2e25243_0 conda-forge bzip2 1.0.8 h8ffe710_4 conda-forge ca-certificates 2021.10.8 h5b45459_0 conda-forge cli11 2.1.2 h0e60522_0 conda-forge cmake 3.21.3 h39d44d4_0 conda-forge console_bridge 1.0.1 h5362a0b_0 conda-forge cppzmq 4.8.1 h4324990_0 conda-forge dartsim 6.10.1 hf7799b8_1 conda-forge dlfcn-win32 1.3.0 h0e60522_0 conda-forge eigen 3.4.0 h2d74725_0 conda-forge fcl 0.6.1 hbf27b1e_3 conda-forge ffmpeg 4.3.1 ha925a31_0 conda-forge flann 1.9.1 h7dfa0ef_1008 conda-forge freeglut 3.2.1 h0e60522_2 conda-forge freeimage 3.18.0 hfcb8cd7_7 conda-forge freetype 2.10.4 h546665d_1 conda-forge gettext 0.19.8.1 ha2e2712_1008 conda-forge gts 0.7.6 h7c369d9_2 conda-forge hdf5 1.10.6 nompi_h5268f04_1114 conda-forge icu 68.1 h0e60522_0 conda-forge ilmbase 2.5.5 h12d4b20_0 conda-forge jbig 2.1 h8d14728_2003 conda-forge jpeg 9d h8ffe710_0 conda-forge jsoncpp 1.9.4 h2d74725_3 conda-forge jxrlib 1.1 h8ffe710_2 conda-forge krb5 1.19.2 hbae68bd_2 conda-forge lcms2 2.12 h2a16943_0 conda-forge lerc 3.0 h0e60522_0 conda-forge libccd 2.1 h0e60522_1 conda-forge libclang 11.1.0 default_h5c34c98_1 conda-forge libcurl 7.79.1 h789b8ee_1 conda-forge libdeflate 1.8 h8ffe710_0 conda-forge libffi 3.4.2 h0e60522_4 conda-forge libglib 2.70.0 h3be07f2_1 conda-forge libiconv 1.16 he774522_0 conda-forge libignition-cmake2 2.9.0 h0e60522_0 conda-forge libignition-common4 4.4.0 h9bd54ec_0 conda-forge libignition-fuel-tools7 7.0.0 he2780a4_0 conda-forge libignition-gazebo6 6.0.0 hf633310_2 conda-forge libignition-gui6 6.0.0 hf170cd1_0 conda-forge libignition-math6 6.9.2 h0e60522_0 conda-forge libignition-msgs8 8.0.0 hb9694b1_0 conda-forge libignition-physics5 5.0.0 h63175ca_1 conda-forge libignition-plugin1 1.2.1 h0e60522_0 conda-forge libignition-rendering6 6.0.1 he5265a2_2 conda-forge libignition-sensors6 6.0.0 h8e8f2a7_0 conda-forge libignition-tools1 1.3.0 h0e60522_0 conda-forge libignition-transport11 11.0.0 h9ee0536_0 conda-forge libignition-utils1 1.1.0 h0e60522_1 conda-forge libode 0.16.2 h415ef7b_7 conda-forge libpng 1.6.37 h1d00b33_2 conda-forge libprotobuf 3.18.1 h7755175_0 conda-forge libraw 0.20.2 hee1bdec_1 conda-forge libsdformat12 12.0.0 h2f10cfe_0 conda-forge libsodium 1.0.18 h8d14728_1 conda-forge libssh2 1.10.0 h680486a_2 conda-forge libtiff 4.3.0 hd413186_2 conda-forge libwebp-base 1.2.1 h8ffe710_0 conda-forge libzip 1.8.0 hfed4ece_1 conda-forge libzlib 1.2.11 h8ffe710_1013 conda-forge lz4-c 1.9.3 h8ffe710_1 conda-forge ninja 1.10.2 h2d74725_1 conda-forge octomap 1.9.7 h5362a0b_0 conda-forge ogre 1.10.12 hadbb816_7 conda-forge openexr 2.5.5 hab3b255_0 conda-forge openjpeg 2.4.0 hb211442_1 conda-forge openssl 1.1.1l h8ffe710_0 conda-forge pcre 8.45 h0e60522_0 conda-forge pip 21.3.1 pyhd8ed1ab_0 conda-forge pkg-config 0.29.2 h2bf4dc2_1008 conda-forge pugixml 1.11.4 h0e60522_0 conda-forge python 3.9.7 h7840368_3_cpython conda-forge python_abi 3.9 2_cp39 conda-forge qt 5.12.9 h5909a2a_4 conda-forge ruby 2.7.2 h8b1b97a_5 conda-forge sdl2 2.0.12 h0e60522_1 conda-forge setuptools 58.2.0 py39hcbf5309_0 conda-forge sqlite 3.36.0 h8ffe710_2 conda-forge tinyxml 2.6.2 h2d74725_2 conda-forge tinyxml2 9.0.0 h39d44d4_1 conda-forge tk 8.6.11 h8ffe710_1 conda-forge tzdata 2021e he74cb21_0 conda-forge ucrt 10.0.20348.0 h57928b3_0 conda-forge urdfdom 2.3.5 h2d74725_0 conda-forge urdfdom_headers 1.0.5 h5362a0b_2 conda-forge vc 14.2 hb210afc_5 conda-forge vs2015_runtime 14.29.30037 h902a5da_5 conda-forge vs2019_win-64 19.29.30037 h774bd60_5 conda-forge vswhere 2.8.4 h57928b3_0 conda-forge wheel 0.37.0 pyhd8ed1ab_1 conda-forge xz 5.2.5 h62dcd97_1 conda-forge yaml 0.2.5 he774522_0 conda-forge zeromq 4.3.4 h0e60522_1 conda-forge zlib 1.2.11 h8ffe710_1013 conda-forge zstd 1.5.0 h6255e5f_0 conda-forge zziplib 0.13.69 h1d00b33_1 conda-forge ```


Details about conda and system ( conda info ):

``` $ conda info (ign-gazebo) C:\src\ign-gazebo\examples\standalone\custom_server\build\build>conda info active environment : ign-gazebo active env location : C:\Users\STraversaro\AppData\Local\mambaforge\envs\ign-gazebo shell level : 1 user config file : C:\Users\STraversaro\.condarc populated config files : C:\Users\STraversaro\AppData\Local\mambaforge\.condarc C:\Users\STraversaro\.condarc conda version : 4.10.3 conda-build version : not installed python version : 3.9.7.final.0 virtual packages : __cuda=11.2=0 __win=0=0 __archspec=1=x86_64 base environment : C:\Users\STraversaro\AppData\Local\mambaforge (writable) conda av data dir : C:\Users\STraversaro\AppData\Local\mambaforge\etc\conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/win-64 https://conda.anaconda.org/conda-forge/noarch package cache : C:\Users\STraversaro\AppData\Local\mambaforge\pkgs C:\Users\STraversaro\.conda\pkgs C:\Users\STraversaro\AppData\Local\conda\conda\pkgs envs directories : C:\Users\STraversaro\AppData\Local\mambaforge\envs C:\Users\STraversaro\.conda\envs C:\Users\STraversaro\AppData\Local\conda\conda\envs platform : win-64 user-agent : conda/4.10.3 requests/2.26.0 CPython/3.9.7 Windows/10 Windows/10.0.19043 administrator : False netrc file : None offline mode : False ```
traversaro commented 2 years ago

Until the problem is fixed, a workaround is to pass to the downstream project:

cmake -DZLIB_LIBRARY_RELEASE:PATH=%CONDA_PREFIX%\Library\lib\zlib.lib .

fyi @diegoferigo

traversaro commented 2 years ago

I wonder if this is related to https://github.com/conda-forge/zlib-feedstock/pull/51 .

traversaro commented 2 years ago

I wonder if this is related to conda-forge/zlib-feedstock#51 .

Indeed, the problem does not occurs if I manually delete the zlib.dll from %CONDA_PREFIX% :

-- Found ZLIB: C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/lib/z.lib (found version "1.2.11")
traversaro commented 2 years ago

The bug does not occur if a simple project with find_package(ZLIB REQUIRED) is tested.

traversaro commented 2 years ago

I modified the FindZLIB.cmake (https://github.com/Kitware/CMake/blob/eeb45401163d831b8c841ef6eba81466b4067b68/Modules/FindZLIB.cmake#L86) file of CMake adding a pair of set(CMAKE_FIND_DEBUG_MODE TRUE) and set(CMAKE_FIND_DEBUG_MODE FALSE) around the call to debug, and I noticed that if the find_package(ZLIB) is on its own only .lib files are searched:

  find_library considered the following locations:

    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlibd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zdlld(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlibd1(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlib1d(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlibstaticd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlibd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zdlld(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlibd1(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlib1d(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlibstaticd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlibd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zdlld(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlibd1(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlib1d(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlibstaticd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlibd(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zdlld(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlibd1(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlib1d(\.lib)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlibstaticd(\.lib)

While in the failing case, also .dll library are searched for some reason:

  find_library considered the following locations:

    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()z(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zdll(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlib1(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/lib/()zlibstatic(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()z(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zdll(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlib1(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/atlmfc/lib/x64/()zlibstatic(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()z(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zdll(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlib1(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/lib/()zlibstatic(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()z(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zdll(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlib1(\.lib|\.dll)
    C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/lib/x64/()zlibstatic(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/lib/()z(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/lib/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/lib/()zdll(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/lib/()zlib1(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/lib/()zlibstatic(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/()z(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/()zlib(\.lib|\.dll)
    C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64/()zdll(\.lib|\.dll)

Furthermore, also the call stack is given in the failing case:

  The item was found at

    C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/zlib.dll

Call Stack (most recent call first):
  C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/CMake/protobuf-config.cmake:6 (find_package)
  C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/share/cmake/ignition-cmake2/cmake2/FindIgnProtobuf.cmake:29 (find_package)
  C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/lib/cmake/ignition-transport11/ignition-transport11-config.cmake:92 (find_package)
  C:/Users/STraversaro/AppData/Local/mambaforge/envs/ign-gazebo/Library/lib/cmake/ignition-gazebo6/ignition-gazebo6-config.cmake:94 (find_package)
  CMakeLists.txt:6 (find_package)
traversaro commented 2 years ago

So the problem boils down to a strange interaction between CMAKE_FIND_LIBRARY_SUFFIXES and https://github.com/conda-forge/zlib-feedstock/pull/51 . If find_package(ZLIB) is used on its own CMAKE_FIND_LIBRARY_SUFFIXES is .lib, and everything works fine. If find_package(ZLIB) is used deep nested in ign-gazebo depencies CMAKE_FIND_LIBRARY_SUFFIXES is .lib;.dll, that is fine whenever in the same directory a zlib.lib and zlib.dll can be found, because the .lib is still preferred. But whenever on the search path a directory with just a zlib.dll is found (as it can happen after https://github.com/conda-forge/zlib-feedstock/pull/51), then it is considered suitable match and it is returned.

traversaro commented 2 years ago

A search on GitHub https://github.com/search?q=org%3Aignitionrobotics+CMAKE_FIND_LIBRARY_SUFFIXES found the problematic piece of code: https://github.com/ignitionrobotics/ign-cmake/blob/c34873d6c6bb301d5a865497483f4399d84c28b8/cmake/ignition-config.cmake.in#L139

The tricky thing is that we would need to patch this on ign-cmake, and then regenerate all ignition packages...

traversaro commented 2 years ago

Upstream PR https://github.com/ignitionrobotics/ign-cmake/pull/189, conda backport https://github.com/conda-forge/libignition-cmake0-feedstock/pull/20 .