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)