【问题标题】:Can't find assimp header files找不到assimp头文件
【发布时间】:2018-12-29 08:13:24
【问题描述】:

我正在使用 CMake,并且我正在使用许多外部库。

文件夹下

`ext/
 - eigen
 - glm
 - glfw
`

所有这些都编译得很好,我可以正确运行我的代码。但是,我通过将 repo 克隆到 ext/ 来安装 assimp,并将我的 CMakeLists.txt 更新为

### Add src to the include directories
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src")

### Include Eigen for linear algebra
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ext/eigen")

### Include glm for other math
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ext/glm")

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ext/assimp") # new line

当我去我的主要写作时

#include <assimp/Importer.hpp>

VSCode 不会抱怨。但是,当我编译它时,我得到了

“致命错误:'assimp/Importer.hpp' 文件未找到”

我做错了什么?

【问题讨论】:

  • 当您克隆整个存储库时,您需要将include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ext/assimp/include") 添加到您的 CMakeLists.txt。
  • @vre 这样做解决了眼前的问题,但现在我得到了ext/assimp/include/assimp/defs.h:53:10: fatal error: 'assimp/config.h' file not found,这甚至不是我的文件。
  • 你试过include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ext only 吗?

标签: c++ cmake assimp


【解决方案1】:

如果您想包含 assimp 头文件,您需要包含 "${CMAKE_CURRENT_SOURCE_DIR}/ext/assimp/include",因为这是它们在存储库中的位置。由于 assimp 不是一个仅包含标头的库 - 与您列出的其他库不同 - 您还需要链接它。你的编译器抱怨 config.h 因为它实际上并不存在(它应该在assimp/include/。如果你检查那里你会看到有一个 config.h.in 用于生成任务 config.h在构建步骤中创建文件,这就是你没有它的原因。

如果您想将 assimp 源代码添加到您的项目中,您可以使用add_subdirectory(ext/assimp)。由于它的大小,您可能希望将 assimp 安装为系统依赖项,然后使用 find_package() 指令将其引入您的项目。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2016-03-31
    • 2021-02-02
    • 2015-04-28
    • 2016-01-01
    相关资源
    最近更新 更多