community
community copied to clipboard
wxwidgets - package method puts `.dll` files in both bin and lib
Package and Environment Details (include every applicable attribute)
- Package Name/Version: wxwidgets/3.1.2
- Operating System+version: Windows
- Compiler+version: msvc-all
Steps to reproduce (Include if Applicable)
One can simply look at the manifest on bintray:
https://bintray.com/bincrafters/public-conan/download_file?file_path=bincrafters%2Fwxwidgets%2F3.1.2%2Fstable%2F0%2Fpackage%2F7dc8cf0975d9c324cf83e0e38addb41a59733865%2F0%2Fconanmanifest.txt
Line 14: bin/wxmsw312ud_aui_vc_custom.dll: 86b04c30f531a847c146227f1d6a591c
Line 1518:
lib/vc_dll/wxmsw312ud_aui_vc_custom.dll: 86b04c30f531a847c146227f1d6a591c
In theory, the lib directory should only have the .lib files and the bin directory should only have the .dll files. However, in this case, we're using the cmake.install() method, which apparently puts both .dll and .lib in the lib directory. This is fine, as it's properly reflected in the package_info method:
self.cpp_info.bindirs.append(libdir)
It looks like the problem is pretty simply that the recipe does the following additional step:
# copy wxrc.exe
if self.settings.os == 'Windows':
self.copy(pattern='*', dst='bin', src=os.path.join(self._build_subfolder, 'bin'), keep_path=False)
Based on the comment about wxrc.exe, the author probably did testing with static libs in which case the _build_subfolder/bin directory only contained wxrc.exe. But, when building shared=True, the _build_subfolder/bin directory is full of .dll and other files, so this step probably just needs to be more precise and copy only wxrc.exe.
I would fix myself, but don't currently have time to verify that this seemingly simple fix doesn't break anything else.