NVIDIA / gvdb-voxels

Sparse volume compute and rendering on NVIDIA GPUs
Other
672 stars 144 forks source link

CMake Error at source/gvdb_library/CMakeLists.txt:225 (target_link_libraries): The "optimized" argument must be followed by a library. #119

Closed meherniger24 closed 3 years ago

meherniger24 commented 3 years ago

Hi,

I am trying to build with OPENVDB flag. My command is below:

cmake -S gvdb/ -B build/ -DCMAKE_TOOLCHAIN_FILE=C:/VCP/vcpkg/scripts/buildsystems/vcpkg.cmake -DGVDB_BUILD_OPENVDB=ON -DGVDB_BUILD_OPENVDB_SAMPLES=ON

However, I am getting the following error on both VS2017 and VS2019:

-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19043. -- Using this path for GVDB_OPENVDB_INCLUDE_DIR: GVDB_OPENVDB_INCLUDE_DIR-NOTFOUND CMake Warning (dev) at source/gvdb_library/CMakeLists.txt:225 (target_link_libraries): Link library type specifier "debug" is followed by specifier "debug" instead of a library name. The first specifier will be ignored. This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at source/gvdb_library/CMakeLists.txt:225 (target_link_libraries): Link library type specifier "debug" is followed by specifier "optimized" instead of a library name. The first specifier will be ignored. This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at source/gvdb_library/CMakeLists.txt:225 (target_link_libraries): Link library type specifier "optimized" is followed by specifier "optimized" instead of a library name. The first specifier will be ignored. This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at source/gvdb_library/CMakeLists.txt:225 (target_link_libraries): The "optimized" argument must be followed by a library.

Any idea how I can solve this?

NBickford-NV commented 3 years ago

Hi meheringer24!

That's interesting, it looks like the find_path call on https://github.com/NVIDIA/gvdb-voxels/blob/master/source/gvdb_library/CMakeLists.txt#L197 isn't finding the OpenVDB header. (I'm assuming you've already successfully run vcpkg install openvdb[tools]:x64-windows, so vcpkg's include directory contains an openvdb subdirectory.)

I'm not 100% sure how the integration with vcpkg is failing, but does it work if you add definitions for GVDB_OPENVDB_INCLUDE_DIR (the folder containing the openvdb directory, which contains openvdb.h), GVDB_OPENVDB_LIB_RELEASE_DIR (the vcpkg folder containing tbb.lib), GVDB_OPENVDB_LIB_DEBUG_DIR (the vcpkg folder containing tbb_debug.lib), and GVDB_OPENVDB_DLL_RELEASE_DIR (the vcpkg folder containing tbb.dll)?

Thanks!

meherniger24 commented 3 years ago

Hi,

I figured out the issue. The problem was installing OpenVDB. I had installed vcpkg and OpenVDB in a different way.

For others who is facing the same issue, install the vcpkg and OpenVDB as mentioned here.

Thanks for helping!