如何从vcpkg导入cmake中的包?
How to import package in cmake from vcpkg?
当我 vcpkg install simdjson
时,它 returns :
The package simdjson:x64-linux provides CMake targets:
find_package(simdjson CONFIG REQUIRED)
target_link_libraries(main PRIVATE simdjson::simdjson simdjson::simdjson-flags simdjson::simdjson-headers)
所以我补充
find_package(simdjson CONFIG REQUIRED)
target_link_libraries(main PRIVATE simdjson::simdjson simdjson::simdjson-flags simdjson::simdjson-headers)
到CMakeLists.txt
使用包simdjson
但是当我 vcpkg install redis-plus-plus[cxx17]
时,它 returns 什么都没有。我应该怎么做才能让 cmake
使用这个包?
不幸的是,redis-plus-plus 不提供 CMake 配置文件。 有人应该向上游提出问题。 不 支持 find_package
你的库确实是不可接受的。因此,由于作者的疏忽,您将不得不自己为他们的库创建一个导入的目标。这是一个示例 CMakeLists.txt,一步一步。我们将从标准样板开始:
cmake_minimum_required(VERSION 3.19)
project(test-redis)
然后我们需要找到hiredis
,这是Redis++的依赖之一:
find_package(hiredis REQUIRED)
这将创建一个名为 hiredis::hiredis
的目标,我们稍后会 link。现在我们将创建一个目标来保存 Redis++ 使用信息。
add_library(redis++::redis++ UNKNOWN IMPORTED)
现在我们需要真正找到头路径和redis++库:
find_path(REDIS_PP_HEADER sw REQUIRED)
find_library(REDIS_PP_LIB redis++ REQUIRED)
现在我们可以告诉 CMake 我们刚刚创建的目标管理我们刚刚找到的库:
set_target_properties(redis++::redis++ PROPERTIES IMPORTED_LOCATION "${REDIS_PP_LIB}")
最后我们可以设置包含路径和对 Hiredis 的依赖。
target_include_directories(redis++::redis++ INTERFACE "${REDIS_PP_HEADER}")
target_link_libraries(redis++::redis++ INTERFACE hiredis::hiredis)
我们现在可以像预期的那样使用库了。
add_executable(main main.cpp)
target_link_libraries(main PRIVATE redis++::redis++)
当我 vcpkg install simdjson
时,它 returns :
The package simdjson:x64-linux provides CMake targets:
find_package(simdjson CONFIG REQUIRED)
target_link_libraries(main PRIVATE simdjson::simdjson simdjson::simdjson-flags simdjson::simdjson-headers)
所以我补充
find_package(simdjson CONFIG REQUIRED)
target_link_libraries(main PRIVATE simdjson::simdjson simdjson::simdjson-flags simdjson::simdjson-headers)
到CMakeLists.txt
使用包simdjson
但是当我 vcpkg install redis-plus-plus[cxx17]
时,它 returns 什么都没有。我应该怎么做才能让 cmake
使用这个包?
不幸的是,redis-plus-plus 不提供 CMake 配置文件。 有人应该向上游提出问题。 不 支持 find_package
你的库确实是不可接受的。因此,由于作者的疏忽,您将不得不自己为他们的库创建一个导入的目标。这是一个示例 CMakeLists.txt,一步一步。我们将从标准样板开始:
cmake_minimum_required(VERSION 3.19)
project(test-redis)
然后我们需要找到hiredis
,这是Redis++的依赖之一:
find_package(hiredis REQUIRED)
这将创建一个名为 hiredis::hiredis
的目标,我们稍后会 link。现在我们将创建一个目标来保存 Redis++ 使用信息。
add_library(redis++::redis++ UNKNOWN IMPORTED)
现在我们需要真正找到头路径和redis++库:
find_path(REDIS_PP_HEADER sw REQUIRED)
find_library(REDIS_PP_LIB redis++ REQUIRED)
现在我们可以告诉 CMake 我们刚刚创建的目标管理我们刚刚找到的库:
set_target_properties(redis++::redis++ PROPERTIES IMPORTED_LOCATION "${REDIS_PP_LIB}")
最后我们可以设置包含路径和对 Hiredis 的依赖。
target_include_directories(redis++::redis++ INTERFACE "${REDIS_PP_HEADER}")
target_link_libraries(redis++::redis++ INTERFACE hiredis::hiredis)
我们现在可以像预期的那样使用库了。
add_executable(main main.cpp)
target_link_libraries(main PRIVATE redis++::redis++)