Pergunta

Como eu disse em uma pergunta anterior, estou planejando portar um projeto QT do VC ++ para o Qtcreator.

O projeto consiste em 4 subprojetos: 3 deles são Libs e o último faz o exe. Os subprojetos são em camadas, o que significa que cada camada tem compilação e vinculação dependências de tempo às camadas abaixo dela.

Os arquivos são organizados da seguinte forma:

root
  lib1
  lib2
  lib3
  main

Eu criei cada um dos subprojetos no qtcreator do zero. Cada pasta contém um arquivo pro com o mesmo nome (por exemplo: lib1 -> lib1.pro). Usando essa abordagem, criei todos os projetos, exceto a última que deve vincular o executável. Eu estava recebendo erros de ligação que corrigi editando manualmente o arquivo Pro e adicionando o código abaixo:

LIBS +=  ../path/lib1.a \
   ../path/lib2.a \
   ../path/lib3.a

Tudo está bem, exceto agora que o Lib3 reclama que não consegue encontrar os símbolos da lib2 e Lib1. Addind Libs ao arquivo lib2.pro não funciona.

Tenho a sensação de que não estou conseguindo como o Qtcreator funciona com Libs e executáveis. Como você organizaria esse projeto para que ele compilasse e vincule corretamente?

Foi útil?

Solução

Depois de trabalhar mais no problema, lembrei -me de que, para a cadeia de ferramentas do GCC, a ordem dos parâmetros do vinculador é importante.

A reversão das entradas da LIBS fez o truque.

Outras dicas

Fico feliz em ver que você encontrou a resposta. Você também pode querer adicionar:

CONFIG += ordered

para seus diretórios raiz. O arquivopro (ele é válido apenas no perfil 'subdirs'). Ele força QMake a gerar arquivos make que preservam a ordem em que você os listou em todas as circunstâncias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top