2012-05-24 5 views
2

Я создал среду кросс-компиляции с mingw на моей машине ubuntu, и я пытаюсь настроить ее с помощью Qt.Являются ли заголовки C++ Qt одинаковыми для окон и Linux?

Я прочитал пару сообщений в блогах и других справочных страницах по настройке этого, но ни один из них, похоже, не объясняет, откуда взять заголовки Qt. Из немногих, кто это делает, все они говорят, скачайте установщик для создателя Qt для Windows, запустите его в вине, найдите файлы заголовков и скопируйте их.

Являются ли эти файлы отличными от тех, которые я уже установил? (Я установил Qt-пакеты из apt-get) Я не вижу смысла в загрузке и распаковке половины загрузки, если у меня уже есть нужные мне файлы.

веселит заранее :)

+0

В дополнение к заголовкам, для компиляции с Qt также требуется препроцессор 'moc'. – MSalters

ответ

4

Являются ли заголовки C++ Qt одинаковыми для окон и Linux?

Они разные. Во время компиляции из источника на платформе Windows qt генерирует по крайней мере один файл для конкретной платформы, который отсутствует в исходном архиве распространения исходного кода.

Один из таких файлов qconfig.h (SRC/corelib/глобальный/qconfig.h), что косвенно включены в QtGlobal и содержит некоторые специфические для данной платформы определения, такие как:

#define Q_BYTE_ORDER Q_LITTLE_ENDIAN 

// Compile time features 
#define QT_ARCH_WINDOWS 

В Linux файл будет иметь совсем другое содержимое.

Этот файл не существует в дистрибутиве исходного кода и создается во время компиляции. В системе Linux этот файл будет иметь различное содержимое. Нет, вы не можете просто использовать заголовки linux. YOu может иметь возможность вручную настраивать заголовки, но будет проще просто захватить существующий пакет insted. И, очевидно, вам понадобятся библиотеки (.dll/ .lib (или * .a)) для связи с Qt, а библиотеки Linux не подходят для этого.

не видят смысла в половине концерта скачать

Вместо загрузки SDK скачать libraries (см в нижней части страницы). Каждый пакет составляет 200..300 МБ, что меньше, чем «половина концерта».

+0

Ссылка на библиотеки указывает мне на исполняемый файл, но также доступен архив tar.gz, содержащий исходный код - который я должен скачать? – jackweirdy

+0

@jackweirdy: * .tar.gz - исходный код. Компиляция qt из источника занимает много времени, и если вы собираетесь перекрестно скомпилировать для Windows, компиляция может занять больше времени и может быть неудачной. – SigTerm

1

заголовки, то .h файлы, определить стандартный интерфейс, с которым вы взаимодействуете с Qt на этой платформе. Реализация платформы зависит от платформы. Таким образом, заголовки будут одинаковыми, но сама библиотека будет другой, то есть вам нужно будет установить версию Qt для Windows в системе Windows, но тот же код должен скомпилировать любой из них.

В Ubuntu вам понадобится libqt4-dev.

+0

У меня уже установлено это; поэтому, если я привязываю каталоги «включить», чтобы указать на существующие заголовки, должен ли он компилироваться под mingw? – jackweirdy

+1

Ну, проблема в том, что вам все равно понадобится версия QT для Windows, чтобы запустить ее ... Таким образом, вам все равно нужны библиотеки QT. Строго говоря, заголовки одинаковы, но для связи вам, вероятно, понадобятся и двоичные файлы. – hsanders

+0

Неверный ответ.Qt генерирует заголовки, специфичные для платформы, и, хотя «заголовки определяют стандартный интерфейс», для работы QtGlobal им нужен определенный для платформы заголовок с большим количеством определений. – SigTerm