alicevision / popsift

PopSift is an implementation of the SIFT algorithm in CUDA.
https://popsift.readthedocs.io
Mozilla Public License 2.0
430 stars 114 forks source link

[bug] Cannot built in vcpkg - MSVS2022 + Cuda 12.6 #161

Open Apotrox opened 1 month ago

Apotrox commented 1 month ago

Describe the bug Trying to build AliceVision following the guide (for Windows), i am unable to build popsift.

To Reproduce Steps to reproduce the behavior:

  1. Follow the guide on AliceVision framework to built dependencies (run .\vcpkg.exe install popsift in the vcpkg directory)
  2. wait
  3. see install-x64-windows-dbg-out.log

Expected behavior Popsift builds without issues

Log install-x64-windows-dbg-out.log

Desktop (please complete the following and other pertinent information):

Additional context Previously had an error describing unsupported visual studio version/compiler. Updated Cuda from 12.3 to 12.6 as well as my VS2022 installation with the latest MSVC (17.9), fixing the compiler issue but presenting me with this :)

Apotrox commented 1 month ago

Hey @griwodz, i've been trying to build your mentioned branch and run into the issue of DevIL not being found. I have installed vcpkg by cloning the vcpkg repo into popsift folder, bootstrapped it from there. Installed all the necessary dependencies as listed in the README, including DevIL, still it can't seem to find it. Can you tell me what i am doing wrong here? Am i missing an argument that points to the DevIL library?

griwodz commented 1 month ago

Hi @Apotrox , I don't actually know anything useful about Windows and vcpkg, I rely on the continuous integration on Github to see if Windows compiles. So I googled for something that may help.

"vcpkg install popsift" works by downloading its portfile.cmake I believe the current portfile is here: https://github.com/microsoft/vcpkg/tree/6146b482ec13d1d33524e9708ffaaf5b7da5af41/ports/popsift

Section 2 on this web page "https://learn.microsoft.com/en-us/vcpkg/get_started/get-started-packaging?pivots=shell-cmd" explains how you can use portfiles in the local filesystem instead of downloading them from github if you set VCPKG_ROOT.

If that works, you can probably get the right branch.

Google gave a page with some hints: https://github.com/Microsoft/vcpkg/issues/1081

This looks as if you can update the portfile:

I interpret the "issues/1801" page as: You try running vcpck once and it fails, but tells you the SHA512 hash you should be using. The "Getting started" web page says the same thing in section 6: try installing, fail, copy the right hash. Update the hash, try again, and it should try to compile the PR.

griwodz commented 1 month ago

One more ... I cannot see that the vcpkg portfile installs DevIL. See here: https://github.com/microsoft/vcpkg/blob/6146b482ec13d1d33524e9708ffaaf5b7da5af41/ports/popsift/vcpkg.json But there is a port of DevIL, it's in the long list of ports on the left side of this page.

Maybe the only thing needed is to add devil to vcpkg.json below the 4 boost dependencies?

Apotrox commented 1 month ago

@griwodz Holy! Thanks! It built! Note that i went back to the vcpkg installation in AliceVision Framework and set that one as root again (just how it is described in the installation guide). For future reference, try to build popsift with vcpkg first and have it fail. Then navigate to .\vcpkg\ports\popsift\ and edit the following files: