Qt: *.pro vs *.pri

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

Что следует делать в файле *.pro и что нужно делать в файле *.pri?

Ответ 1

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

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

Ответ 2

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

.pro

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

.При

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

Как вы можете видеть в своих именах, основное отличие состоит в том, что файлы .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 можно прочитать здесь:

включают в себя (имя файла)

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

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

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

Ответ 3

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

Справка: *. pro vs *.pri