gpt4 book ai didi

c++ - 不能使用 Cmake 在另一个 header 中包含外部库

转载 作者:行者123 更新时间:2023-11-30 02:46:23 24 4
gpt4 key购买 nike

我有一个具有以下文件夹结构的项目设置:

  • 外部
    • 提升
    • 波科
  • 图书馆
    • 库1
      • 来源
        • lib1.cpp
      • CMakeLists.txt
    • 库2
      • 来源
      • CMakeLists.txt
  • 项目
    • 项目 1
      • 来源
      • CMakeLists.txt
    • 项目
      • 来源
      • CMakeLists.txt
  • 公开
    • 库1
      • lib1.h
    • 图书馆2

基本上我有一个用于外部库(如 Poco 或 Boost)的文件夹。旁边有一个项目文件夹。每个项目都有自己独立的源文件,并有可能包含/链接 Libraries 文件夹中的一个或多个库。每个库还有一个私有(private) src 文件夹和一个公共(public)头文件文件夹。

库的 CMakeLists.txt 文件看起来像这样(${PUBLIC_DIRECTORY} 设置为正确的公用文件夹)

set(Sources
"${PUBLIC_DIRECTORY}/lib1.h"
"src/lib1.cpp"
)

include_directories("../../External/Boost")
add_library(Lib1 ${Sources})
link_directories("${CMAKE_CURRENT_BINARY_DIR}/Lib1")

当我尝试包含像 boost/lexical_cast.hpp 这样的 boost header 时,问题发生了。当我将它包含在 lib1.cpp 中时,一切都会编译。但是当我在 lib1.h 中做同样的事情时,我得到错误:boost/lexical_cast.hpp: No such file or directory.

有谁知道如何解决这个问题?

提前致谢

最佳答案

将我的评论变成答案

当您在 .h 文件中#include "boost/..." 时,请确保所有使用该 .h 的项目> 文件已正确配置为使用 Boost。请记住,从编译器的角度来看,.h 文件并不真正存在 - 它们的内容以文本形式粘贴到 .cpp 文件中,因此只有 >.cpp 文件的设置(例如包含路径)适用。

关于c++ - 不能使用 Cmake 在另一个 header 中包含外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com