Qt: * .pro vs * .pri

87

Qual é a diferença entre os arquivos de configuração *.proe *.prido qmake?

O que deve ir em um arquivo * .pro e o que deve ir em um arquivo * .pri?

Roman Byshko
fonte

Respostas:

53

Um .proarquivo é onde você executaria o QMake. Um .priarquivo é incluído por um .proarquivo. Fora isso, não há muita diferença entre os dois.

O uso de exemplo pode ser se você tiver diferentes compilações que precisam de opções diferentes. Você pode colocar informações compartilhadas no .pro, enquanto adia as opções para vários arquivos .pri. Um pouco mais de informação, embora reconhecidamente não muito mais, pode ser encontrada aqui .

Bart
fonte
74

Há uma diferença principal entre sua reutilização direcionada:

.pró

Isso geralmente é chamado de arquivo de projeto .

.pri

Geralmente é chamado de Arquivo de inclusão de projeto .

Como você pode ver em seus nomes, a principal diferença é que os .priarquivos devem ser incluídos. Isso é semelhante a incluir módulos em linguagem de programação para compartilhar a funcionalidade, essencialmente.

Você será capaz de gravar as configurações comuns e o código nesses .priarquivos e incluí-los de vários .proarquivos conforme a necessidade. É assim que você o usaria na prática:

foo.pri

FOO = BAR

olá.pro

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

world.pro

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

Dessa forma, a comunalidade estaria disponível tanto em hello.procomo em world.pro. Não faz muita diferença neste cenário, mas quando a funcionalidade compartilhada ficar mais longa, você economizará um pouco de escrita, sincronização, correção de bugs e assim por diante.

Você pode até incluir um .priarquivo dentro de outro .priarquivo, se desejar. Você também pode incluir .priarquivos em diferentes subprojetos, etc. É muito bom.

A sintaxe é a mesma, entretanto, para os arquivos .proe .pri. No final, você executaria o qmake nos .proarquivos, e isso também é o que o qmake gera para você se você não tiver um arquivo de projeto existente e pretende usar qmake -project.

Você pode ler mais sobre a função de inclusão aqui :

incluir (nome do arquivo)

Inclui o conteúdo do arquivo especificado por nome do arquivo no projeto atual no ponto em que é incluído. Esta função é bem-sucedida se o nome do arquivo for incluído; caso contrário, ele falha. O arquivo incluído é processado imediatamente.

Você pode verificar se o arquivo foi incluído usando esta função como condição para um escopo.

Apenas para ser completa, há também .prf Projeto recurso Arquivos e .prl Projeto Linker arquivos , mas como um usuário final, você não precisa lidar com isso por enquanto.

lpapp
fonte
16

O formato dos .priarquivos é exatamente igual ao formato dos .proarquivos. A principal diferença é a intenção; Um .pro é o que a maioria das pessoas esperaria para executar o qmake diretamente, enquanto um .pri deve ser incluído por um .pro. Quando você instrui o qmake a incluir outro arquivo, ele apenas processa os comandos naquele arquivo como se estivessem no arquivo atual.

Para referência: * .pro vs * .pri

AlphaMale
fonte
Na verdade, vi essa pergunta e não notei que a segunda resposta realmente responde à minha pergunta .. :(
Roman Byshko