vcpkg BOOST库填坑

vcpkg对于boost库暂时不支持find_package

解决方法

  • find_library to search for the library files (.lib) and use taget_link_libraries to link them, and
  • find_path to search for header files and include them with target_include_directories.
  • 也就是说需要用find_library和find_path命令替换find_package
  • 如果要继续使用find_package,那么可以使用CMake自定义的内部变量Boost_INCLUDE_DIRS,Boost_LIBRARIES,请参考下面的例子

例子

使用cmake的例子:

  • 注意,如果boost的某个包比如asio没有链接库,那么find_package不需要COMPONENTS参数
  • 另外target_include_directories,target_link_libraries和include_directories,link_libraries是不同的
cmake_minimum_required(VERSION 3.10)
set(CMAKE_TOOLCHAIN_FILE /home/xxx/snap/vcpkg/scripts/buildsystems/vcpkg.cmake)

project(a)

AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src SRC_LIST)
find_package(Boost REQUIRED COMPONENTS thread)
add_executable(a.out ${SRC_LIST})
target_include_directories(a.out PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(a.out ${Boost_LIBRARIES})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐