Qt: * .pro против * .pri

87

В чем разница между *.proи *.priконфигурационными файлами QMAKE?

Что должно быть в файле * .pro, а что - в файле * .pri?

Роман Бышко
источник

Ответы:

53

.proФайл , что вы бы запустить QMAKE на. .priФайл включен в .proфайл. Кроме этого, между ними нет большой разницы.

Пример использования может быть, если у вас разные сборки, для которых требуются разные параметры. Вы можете поместить совместно используемую информацию в .pro, а параметры откладывать для различных файлов .pri. Немного больше информации, хотя, по общему признанию, не намного, можно найти здесь .

Барт
источник
74

Есть одно главное различие между их целевым повторным использованием:

.pro

Обычно это называется файлом проекта .

.pri

Обычно это называется включенным файлом проекта .

Как вы можете видеть по их названиям, основное различие состоит в том, что .priфайлы предназначены для включения файлов. По сути, это похоже на включение модулей в язык программирования для совместного использования функций.

Вы сможете записывать общие настройки и код в эти .priфайлы и включать их из нескольких .proфайлов по мере необходимости. Вот как вы могли бы использовать это на практике:

foo.pri

FOO = BAR

hello.pro

...
include($$PWD/foo.pri)
...

world.pro

...
include($$PWD/foo.pri)
...

Таким образом, общность будет доступна как в hello.pro, так и world.pro. Это не имеет большого значения в этом сценарии, но когда общая функциональность станет длиннее, это сэкономит вам некоторые записи, а также синхронизацию, исправление ошибок и так далее.

Вы даже можете включить .priфайл в другой .priфайл, если хотите. Вы также можете включать .priфайлы в разные подпроекты и т. Д. Это очень приятно.

Синтаксис такой же, однако, для обоих .proи .priфайлов. В конце концов, вы должны запустить qmake для .proфайлов, и это также то, что qmake генерирует для вас, если у вас нет файла проекта, и вы собираетесь его использовать qmake -project.

Вы можете прочитать больше о функции include здесь :

включить (имя файла)

Включает содержимое файла, указанного в filename, в текущий проект в том месте, где оно было включено. Эта функция завершается успешно, если указано имя файла; в противном случае это не удается. Включенный файл обрабатывается немедленно.

Вы можете проверить, был ли включен файл, используя эту функцию в качестве условия для области.

Просто чтобы быть полным, есть также .prf проект Feature Файлы и .prl проекта Linker Файлы , но как конечный пользователь, вам не нужно иметь дело с тем, что на данный момент.

lpapp
источник
16

Формат .priфайлов точно такой же, как формат .proфайлов. Основное различие заключается в намерении; .pro - это то, на чем большинство людей ожидает запустить qmake напрямую, в то время как .pri должен быть включен в .pro. Когда вы указываете qmake включить другой файл, он просто обрабатывает команды в этом файле, как если бы он был в текущем файле.

Для справки: * .pro vs * .pri

Альфа-самец
источник
Я действительно видел этот вопрос и не заметил, что второй ответ на самом деле отвечает на мой вопрос .. :(
Роман Бышко 02