linux 上的 vcpkg 工具链

vcpkg toolchain on linux

我只是想知道您是如何知道如何正确区分 vcpkg 中的库的? 即

find_package(gtest REQUIRED) 会失败但是

find_package(需要 GTest)将通过

我的意思是,如果我列出已安装的软件包,我会以小写字母显示它们,即

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

所以如果我想添加 fftw3,我怎么知道它是哪种情况?

find_package(fftw3 REQUIRED) 失败...

假设您正确地将 -DCMAKE_TOOLCHAIN_FILE=$HOME/Proj/vcpkg/scripts/buildsystems/vcpkg.cmake 添加到您的构建中,那么您观察到的内容与 vcpkg 无关。

find_package 与您所在的文件系统一样 case-sensitive。在 Windows 上,gtest 会工作,但真实姓名是 GTest,所以只有那个在 Linux 上工作。 fftw3 包的名称同样是 FFTW3.

Vcpkg 也非常有帮助地告诉您:

$ ./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)