我正在使用Jetbrains CLion 2017.3和 bundle 的CMake版本3.9.6与mingw64 5.0版本/ g++ 7.1。
尽管阅读了“掌握CMake”(我是CMake的新手!),但我仍然很难理解基本知识。自三天以来,我一直在寻找CMake解决方案来创建自己的使用Boost(1.66.0)库的仅 header 库。

使用我的CMakeLists.txt可以找到增强库,但是我不能在当前源目录的头文件中包含增强头。

我当前的源目录包含“CMakeLists.txt”和头文件
“test_boost.h”。
如果我尝试在头文件“test_boost.h”中包含boost头,则找不到boost头!

我做错了什么?

我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)
project(headerOnlyLib1)

set(CMAKE_CXX_STANDARD 11)

set(ENV{BOOST_ROOT} "C:/dev/boost/mingw/boost_1_66_0/boost")
set(Boost_USE_STATIC_LIBS        ON) # only find static libs
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
find_package(BOOST 1.66 REQUIRED)
IF (Boost_FOUND)
    message(STATUS "BOOST FOUND !")
ELSE()
    message(STATUS "BOOST NOT Found !")
endif()
add_library(headerOnlyLib INTERFACE)
target_include_directories(headerOnlyLib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(headerOnlyLib INTERFACE ${Boost_INCLUDE_DIRS})
target_link_libraries(headerOnlyLib ${Boost_LIBRARIES})

最佳答案

简短的回答:不能。

“仅 header 的库”仅是一个或多个 header 。它不是链接的或真正独立的。

如果仅 header 库具有依赖项,则库的用户也具有那些依赖项,需要将它们包括在自己的内部版本中。

10-05 21:46