Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
traversaro opened this issue Oct 26, 2021 · 8 comments · Fixed by conda-forge/libignition-cmake0-feedstock#20

Comments

@traversaro
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor Author

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

@traversaro
Copy link
Contributor Author

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
Copy link
Contributor Author

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

@traversaro
Copy link
Contributor Author

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
Copy link
Contributor Author

So the problem boils down to a strange interaction between CMAKE_FIND_LIBRARY_SUFFIXES and conda-forge/zlib-feedstock#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 conda-forge/zlib-feedstock#51), then it is considered suitable match and it is returned.

@traversaro
Copy link
Contributor Author

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
Copy link
Contributor Author

Upstream PR gazebosim/gz-cmake#189, conda backport conda-forge/libignition-cmake0-feedstock#20 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant