vcpkg toolchain on linux
I just wonder how you can know how to properly case the libraries in vcpkg? i.e.
find_package(gtest REQUIRED) will fail but
find_package(GTest REQUIRED) will pass
What I mean is if I list the installed packages I get them in lowercase letters, i.e.
CMake suite maintained and supported by Kitware (kitware.com/cmake).
~/Proj$ cd vcpkg
~/Proj/vcpkg$ ./vcpkg list
fftw3:x64-linux 3.3.10#3 FFTW is a C subroutine library for computing the...
gtest:x64-linux 1.11.0#3 GoogleTest and GoogleMock testing frameworks
vcpkg-cmake-config:x64-linux 2021-12-28
vcpkg-cmake:x64-linux 2021-12-20
So if I for instance want to add fftw3, how can I tell which case it is?
find_package(fftw3 REQUIRED) fails...
Assuming you are correctly adding -DCMAKE_TOOLCHAIN_FILE=$HOME/Proj/vcpkg/scripts/buildsystems/vcpkg.cmake
to your build, then what you're observing has nothing to do with vcpkg in particular.
find_package
is as case-sensitive as the filesystem you're on. On Windows, gtest
will happen to work, but the real name is GTest
, so only that one works on Linux. The name of the fftw3
package is, similarly, FFTW3
.
Vcpkg very helpfully tells you this, too:
$ ./vcpkg install fftw3:x64-linux
...
The package fftw3 provides CMake targets:
find_package(FFTW3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE FFTW3::fftw3)
find_package(FFTW3f CONFIG REQUIRED)
target_link_libraries(main PRIVATE FFTW3::fftw3f)
find_package(FFTW3l CONFIG REQUIRED)
target_link_libraries(main PRIVATE FFTW3::fftw3l)
$ ./vcpkg install gtest:x64-linux
...
The package gtest provides CMake targets:
find_package(GTest CONFIG REQUIRED)
target_link_libraries(main PRIVATE GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main)