我最近开始把我用Java编写的游戏引擎(使用LWJGL)转换成C/C++。我在Fedora 25上使用Qt Creator和CMake(我很确定这不会影响任何东西)链接所有目录、文件等。GLFW安装在我的系统上,但我决定使用源版本,而不是包含的版本。我正在为我的扩展加载程序使用glad,并按照GLFW website上的教程对其进行配置。我还没有通过“Hello World”测试,因为当我在glad.h文件中包含main.c文件时,会得到一个错误:
<glad/glad.h>: No such file or directory
同样奇怪的是,我在使用glad自己的生成器创建的glad.c文件中得到了同样的错误。我的main.c文件如下

#include <stdio.h>
#include <glad/glad.h>
#include <GLFW/glfw3.h>

int main(int argc, char *argv[])
{
    printf("Kick Ass Game Engine");
    return 0;
}

我也尝试过使用"glad.h:而不是<glad/glad.h>(我发现这个建议here)。这确实适用于我的main.c文件,但我仍然对glad.c文件有同样的问题,即使我编辑它以反映main.c
我的项目目录如下:
- KAGE/
  -> CMakeLists.txt
  -> glad.c
  -> glad.h
  -> main.c
  -> khplatform.h
-> KAGE/lib/
   -> glad
   -> glfw-3.2.1

如您所见,我所有的.c和它们的头文件都在一个目录中。lib目录是我保持高兴和glfw的地方。我刚刚将文件从lib/glad目录复制到主项目中。
我的CMake看起来像这样
project(KAGE)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)

add_subdirectory(/home/brian/KAGE/lib/glfw-3.2.1)

find_package(OpenGL REQUIRED)

target_link_libraries(KAGE glfw)

我试过四处搜索,但人们在尝试调用系统上安装的库时遇到的所有问题都在哪里。我的没有安装。我有一个单独的目录(lib)保存我使用的所有东西。我发现唯一接近我所寻找的解决方案是用<glad/glad.h>替换"glad.h"。正如我之前所说,这不起作用。GLFW网站上的教程没有提供任何其他信息或故障排除。
任何帮助或建议都非常感谢。谢谢您。

最佳答案

默认情况下,CMake不包括当前目录。要启用此行为,需要设置CMAKE_INCLUDE_CURRENT_DIR变量:

set(CMAKE_INCLUDE_CURRENT_DIR ON)

之后,为了包含头,glad.c文件可以使用
#include "glad.h"

关于c - #include <glad/glad.h>:没有这样的文件或目录(即使源和 header 位于同一目录中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42430457/

10-11 16:53