Я подозреваю, что ваш патч не будет работать, так как он предотвращает включение необходимых заголовков. Это может вызвать всевозможные странные проблемы.
( Редактировать: Я больше не подозреваю, что после прочтения одного из ваших комментариев - если все, что вы извлекли из GLee.h - это проверки и директивы #error, все должно работать ... Вероятно. )
Насколько я могу судить, проблема в том, что Qt пытается определить перечисления, которые конфликтуют с макросами препроцессора X. В частности, CursorShape определяется X.h как 0, а затем как qnamespace.h как перечисление, что приводит к довольно бесполезному сообщению об ошибке «error: ожидаемый идентификатор перед числовой константой»
Более чистый способ сделать то, что вы пытаетесь сделать, это включить файлы в следующем порядке, и эти макросы не определены:
#include "qgl.h"
#undef __glext_h_
#undef __glxext_h_
#undef __gl_h_
#include "GLee.h"
Это не требует исправления GLee.h, но может дать неожиданные результаты, в зависимости от того, почему GLee.h хочет быть включенным первым.
Лучшим решением было бы включить GLee.h и qgl.h в отдельные блоки компиляции, но это может оказаться невозможным.
Кстати, хорошей стратегией отладки для такого рода проблем является передача -E в gcc - это даст вам предварительно обработанный источник, который вы можете проверить, чтобы найти строку, вызывающую сбой. В этом случае имя enum было заменено константой 0, что давало понять, что имя определяется в другом месте. В результате поиска имени enum в / usr / include был обнаружен заголовок ошибки X.h. Что ж, если честно, неприятной парой здесь является Qt - разработчики должны знать лучше, чем использовать константы X11 в качестве идентификаторов в кроссплатформенной среде.