Составление примеров из GLFW? - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь скомпилировать файл simple.c в glfw-3.2.1 / examples в Ubuntu 18.04.Я использую следующую команду компиляции:

gcc -o simple simple.c glad.c -lglfw3 -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor

Я скопировал и вставил glad.c и glad.h в эту папку примеров, а также в папку include, которая пришла с glad.zip

Однако, когда я пытаюсь скомпилировать код, я получаю следующее:

glad.c:25:10: fatal error: glad/glad.h: No such file or directory
 #include <glad/glad.h>

Я не понимаю, почему это так, так как я включаю glad.c в команду компиляции.

Я следую этому уроку, чтобы настроить рад https://learnopengl.com/Getting-started/Creating-a-window. К сожалению, этот урок opengl ориентирован на MS Windows.Есть ли более простой способ настроить радость в Ubuntu (sudo apt install ...)?

Что мне здесь не хватает?

Спасибо

1 Ответ

0 голосов
/ 14 сентября 2018

Включение glad.c в команду компиляции не приведет к вводу заголовка, оно скомпилирует glad.c и принесет объект из сгенерированного файла (так что это было бы несколько близко к -lglad, если вы установили некоторыерад библиотека)

К сожалению, нет никакого пакета ubuntu для радости, следующая простейшая вещь будет просто скомпилировать примеры вместе с glfw (просто запустите cmake и make в папке glfw), но мыэто можно исправить в любом случае.

Понимание ошибки

glad.c:25:10: fatal error: glad/glad.h: No such file or directory #include <glad/glad.h> говорит, что «файлу glad.c нужен заголовок, расположенный в glad / glad.h, но я не могу его найти»

Это может быть проблемой с включаемыми путями (gcc не ищет в каталогах, в которых вы хотели его видеть), или файл на самом деле не здесь.

Просмотр glad.c и simple.c, они используют этот синтаксис:

#include <glad/glad.c

Включения могут быть двух видов, либо через двойные кавычки, в этом случае они называются «локальными включениями», и gcc будет искатьHeaders в текущем каталоге или с угловыми скобками, и они обычно являются «системными включениями»;вам нужно указать gcc, где их искать с помощью опции -I

Исправление

Существует несколько способов исправить это.

  • Мы можем использоватькомандная строка / среда, которую ожидают файлы c.

Во-первых, соблюдайте иерархию zip, в сообщении, на которое вы ссылаетесь, должно быть два включаемых каталога, поэтому вам нужно поместить заголовки туда, где они былиzip-файл (glad.h в каталоге glad);

, затем скажите gcc найти включаемые файлы в текущем каталоге с помощью -I. (. является текущим каталогом)

Командастрока будет выглядеть примерно так: gcc -o simple simple.c glad.c -I. -lglfw3 -l...

или

  • change simple.c и glad.c для включения "glad.h" вместо <glad/glad.h>;Затем файлы будут автоматически искать файл, в котором они были.

Попытавшись скомпилировать simple.c так же, как вы это делали сейчас, вам также понадобится заголовок linmath.h;Я не уверен, что если он приходит с радостью, но рад, и linmath.h находятся в каталоге deps glfw в дереве git, я бы предположил, что они также находятся в tar.

...