C++ CMake包含推进野兽(仅页眉)

C++ CMake包含推进野兽(仅页眉),c++,boost,cmake,C++,Boost,Cmake,我想把它包括在我的项目中。这是一个只有标题的库。我已将Beast存储库克隆到与我的项目相同的目录中 我在CMake中使用以下内容来包括标题: set(BEAST_INCLUDE_DIR ../beast/include) include_directories(${BEAST_INCLUDE_DIR}) set(SOURCE_FILES ${BEAST_INCLUDE_DIR}/boost/beast.hpp ...) add_library(my_lib ${SOURCE_FILES})

我想把它包括在我的项目中。这是一个只有标题的库。我已将Beast存储库克隆到与我的项目相同的目录中

我在CMake中使用以下内容来包括标题:

set(BEAST_INCLUDE_DIR ../beast/include)

include_directories(${BEAST_INCLUDE_DIR})

set(SOURCE_FILES ${BEAST_INCLUDE_DIR}/boost/beast.hpp ...)

add_library(my_lib ${SOURCE_FILES})
我包括使用以下内容(与其他Boost包括一起使用):

我建议创建Beast,然后将其作为依赖项添加到库中

为Beast创建接口库:

add_library(boost_beast INTERFACE)

target_include_directories(boost_beast
                           SYSTEM
                           PUBLIC
                           "${CMAKE_CURRENT_LIST_DIR}/../beast/include")
请注意,在对的调用中,我已指定:

  • SYSTEM
    :告诉编译器目录的含义是系统包含目录
  • PUBLIC
    :告诉编译器应该使目录对目标本身(
    boost_beast
    )和目标用户(您的库)都可见
将Beast作为依赖项添加到库中:

add_library(boost_beast INTERFACE)

target_include_directories(boost_beast
                           SYSTEM
                           PUBLIC
                           "${CMAKE_CURRENT_LIST_DIR}/../beast/include")
然后,您可以将
boost\u beast
作为依赖项添加到库中:

add_library(my_lib ${SOURCE_FILES})

target_link_libraries(my_lib boost_beast)

此时,
my_lib
将临时提供Boost Beast包含目录。

使用绝对路径包含目录:
set(Beast_包含目录
${CMAKE_当前源目录}/./Beast/include)
你的提升和你的CMake版本是什么?@Tsyvarev我试过绝对路径。同样的问题。@usr1234567 Boost 1.63.0。CMake 3.8.2
add_library(my_lib ${SOURCE_FILES})

target_link_libraries(my_lib boost_beast)