我最近开始将我用Java编写的游戏引擎(使用lwjgl)转换为C/C++。我在Fedora 25上使用Qt Creator和CMake(我敢肯定这不会影响任何内容)来链接所有的目录,文件等。GLFW安装在我的系统上,但我决定使用源代码版本比包含的版本。我为我的扩展加载器感到高兴,并按照GLFW website上的教程进行配置。我还没有得到过的“Hello World”测试,因为当我包括glad.h
文件在我main.c
文件,我得到一个错误:#包括<glad/glad.h>:没有这样的文件或目录(尽管源文件和头文件在同一目录中)
<glad/glad.h>: No such file or directory
什么是同样奇怪的是,我得到了同样的错误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.h"
替换<glad/glad.h>
的解决方案。正如我刚才所说,这不起作用。 GLFW网站上的教程不提供任何其他信息或故障排除。
任何帮助或建议,非常感谢。谢谢。
这工作。我还必须将'glad.c'文件更改为使用'#include“glad.h”'以及我的'main.c'。谢谢。你有什么想法,为什么'#include'之前不工作?它在'glad.c'文件中给了我同样的错误,但是'#include'没有问题,尽管它们在项目目录中的设置方式都是一样的。 –
Buttmoist
当你使用'#include'时,你要求编译器在* include目录*之一中查找指定的**相对路径**。由于您的目录都不包含此相对路径,因此编译器无法找到它。另外,include目录应该在CMake中用'include_directories()'命令指定。当你执行'add_subdirectory()'来构建这个库时,这由GLFW完成。 –
Tsyvarev