2017-02-24 52 views
0

我最近开始将我用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网站上的教程不提供任何其他信息或故障排除。

任何帮助或建议,非常感谢。谢谢。

回答

1

CMake的不包括默认当前目录。为了使这种行为,你需要设置CMAKE_INCLUDE_CURRENT_DIR变量:

set(CMAKE_INCLUDE_CURRENT_DIR ON) 

之后,对包括头的glad.c文件可以使用

#include "glad.h" 
+0

这工作。我还必须将'glad.c'文件更改为使用'#include“glad.h”'以及我的'main.c'。谢谢。你有什么想法,为什么'#include'之前不工作?它在'glad.c'文件中给了我同样的错误,但是'#include '没有问题,尽管它们在项目目录中的设置方式都是一样的。 – Buttmoist

+0

当你使用'#include '时,你要求编译器在* include目录*之一中查找指定的**相对路径**。由于您的目录都不包含此相对路径,因此编译器无法找到它。另外,include目录应该在CMake中用'include_directories()'命令指定。当你执行'add_subdirectory()'来构建这个库时,这由GLFW完成。 – Tsyvarev

3

似乎glad.h不在名为glad的目录中,因此通过glad/glad.h将其包括在内是无法使用的!

如果你在linux上有一招是做一个到.的软链接叫glad然后你可以有glad/glad/glad/glad/glad.h如果你想要的话。

更好的解决方案是这样的文件在他们的预期路径最终正确安装的东西...

+0

创建'glad'目录没有工作。我仍然有同样的问题。根据高兴的网站,我也很高兴。它只是用来生成头文件,除了'pip'用途之外,不需要任何特殊的安装目录。由于glfw与我设置的方式没有任何关系,所以我不认为有一个高兴的目录是没有问题的。 glfw网站也表示只需将这些文件生成并将它们放在项目的根目录中即可。 – Buttmoist

相关问题