找不到 cmake 构建的库中包含的外部标头

问题描述 投票:0回答:1

我有一个非常简单的库,具有以下结构:

src
 - myLib.h
 - myLib.cpp
App
 - testApp.cpp
CMakelist.txt
cmake_minimum_required(VERSION 3.10)
project(Testing)


# JSON
find_package(nlohmann_json REQUIRED)


add_library(myLib SHARED
        src/myLib.cpp
)

target_link_libraries(myLib PUBLIC nlohmann_json::nlohmann_json)


set(CMAKE_BUILD_TYPE debug)


install(TARGETS myLib 
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY src/ DESTINATION include FILES_MATCHING PATTERN "*.h")

构建库工作正常,但是当我链接到仅包含 myLib.h 的 testApp.cpp 时,出现以下错误:

g++ testApp.cpp -o runApp -I ../install/include/ -l ../install/lib/libmyLib.so

./install/include/myLib.h:16:10: fatal error: nlohmann/json.hpp: No such file or directory
   16 | #include <nlohmann/json.hpp>

这里可能出了什么问题?

cmake linker-errors
1个回答
0
投票

当您链接库时,它们不一定会向您提供所有标头。为了从外部访问标头,您需要定义包含目录。

请查看

CMake Docs
上的命令
include_directories
target_include_directories 来执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.