Я тестирую vcpkg (на macOS) с проектом CMake.
Поскольку не все пакеты vcpkg имеют модули поиска CMake, я пытаюсь использовать пакет, который неhave one: libuuid
Это дерево каталогов относительно libuuid, которое я вижу из корня vcpkg:
$ find packages/libuuid_x64-osx
packages/libuuid_x64-osx
packages/libuuid_x64-osx/include
packages/libuuid_x64-osx/include/uuid
packages/libuuid_x64-osx/include/uuid/uuid.h
packages/libuuid_x64-osx/BUILD_INFO
packages/libuuid_x64-osx/lib
packages/libuuid_x64-osx/lib/libuuid.a
packages/libuuid_x64-osx/CONTROL
packages/libuuid_x64-osx/debug
packages/libuuid_x64-osx/debug/lib
packages/libuuid_x64-osx/debug/lib/libuuid.a
packages/libuuid_x64-osx/share
packages/libuuid_x64-osx/share/libuuid
packages/libuuid_x64-osx/share/libuuid/copyright
Пример программы:
#include <iostream>
#include <uuid/uuid.h>
int main(int argc, char **argv)
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
Пример CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
project(vcpkg_example_project)
add_executable(app app.cpp)
target_link_libraries(app uuid)
Если я правильно понимаю, философия vcpkg состоит в том, чтобы не предоставлять недостающие модули поиска CMake, а просто #include <libfoo/foo.h>
работать из коробки.И на самом деле пример выше компилируется нормально.Но не может найти -luuid
:
$ cmake -DCMAKE_TOOCHAIN_FILE=/Users/me/Dev/vcpkg/scripts/buildsystems/vcpkg.cmake ..
...
$ cmake --build .
Scanning dependencies of target app
[ 50%] Building CXX object CMakeFiles/app.dir/app.cpp.o
[100%] Linking CXX executable app
ld: library not found for -luuid
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [app] Error 1
make[1]: *** [CMakeFiles/app.dir/all] Error 2
make: *** [all] Error 2
Что мне не хватает?
Кроме того, я вижу, что есть installed/x64-osx/lib/libuuid.a
.Разве installed/x64-osx/lib
не должен автоматически добавляться в качестве пути lib скриптом cmake toolchain?