我最近开始将我用Java编写的游戏引擎(使用lwjgl)转换为C/C++。我在Fedora 25上使用Qt Creator和CMake(我很确定这不会影响任何事情)来链接所有目录,文件等。 GLFW安装在我的系统上,但我决定使用源版本,而不是包含的版本。我正在使用 glad 作为我的扩展加载器,并按照 GLFW 网站上的教程对其进行了配置。我还没有通过"Hello World"测试,因为当我在main.c
文件中包含glad.h
文件时,出现错误:
<glad/glad.h>: No such file or directory
同样奇怪的是,我在glad.c
文件中遇到了同样的错误,该文件是使用glad自己的生成器创建的。我的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>
(我在这里找到了这个建议)。这确实适用于我的main.c
文件,但是即使我对其进行了编辑以反映main.c
,我仍然对glad.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.h
不在名为glad
的目录中,因此通过glad/glad.h
包含它永远不会起作用!
如果你在linux上,一个技巧是建立一个软链接到.
称为glad
,然后如果你愿意,你可以拥有glad/glad/glad/glad/glad.h
。
更好的解决方案是正确安装东西,以便文件最终到达其预期的路径......
> 默认情况下,CMake 不包含当前目录。要启用此行为,您需要设置CMAKE_INCLUDE_CURRENT_DIR变量:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
之后,包括您的glad.c
文件可以使用的标头
#include "glad.h"
今天我遇到了同样的问题,并找到了这个帖子。 我使用 vcpkg 来管理我的 pkg。 我可以确定文件的路径是正确的,但它不起作用。 神奇的是,当我删除 #include 并重新输入它时,它可以工作。
如果 glad 文件夹位于项目根目录中,则表示:
KAGE
glad
然后是高兴的Cmakelist:
# glad
set(GLAD_DIR "${LIB_DIR}glad")
add_library("glad" "${GLAD_DIR}/src/glad.c")
target_include_directories("glad" PRIVATE "${GLAD_DIR}/include")
target_include_directories(${PROJECT_NAME} PRIVATE "${GLAD_DIR}/include")
target_link_libraries(${PROJECT_NAME} "glad" "${CMAKE_DL_LIBS}")
如果它在库目录中
KAGE
lib
glad
然后更改 cmkaelist: 从set(GLAD_DIR "${LIB_DIR}glad")
到set(GLAD_DIR "${LIB_DIR}lib/glad")