Pergunta antiga, mas ainda vale uma resposta atualizada. Hoje é comum fazer o que o Qt Creator faz quando construções de sombra são usadas (elas são ativadas por padrão ao abrir um novo projeto).
Para cada tipo e destino de construção diferente, o direito qmake
é executado com os argumentos certos em um diretório de construção diferente. Então isso é simplesmente construído com o simples make
.
Portanto, a estrutura de diretório imaginária pode ter esta aparência.
/
|_/build-mylib-qt5-mingw32-debug
|_/build-mylib-qt5-mingw32-release
|_/build-mylib-qt4-msvc2010-debug
|_/build-mylib-qt4-msvc2010-release
|_/build-mylib-qt5-arm-debug
|_/build-mylib-qt5-arm-release
|_/mylib
|_/include
|_/src
|_/resources
E o importante é que a qmake
é executado no diretório de construção:
cd build-mylib-XXXX
/path/to/right/qmake ../mylib/mylib.pro CONFIG+=buildtype ...
Em seguida, ele gera makefiles no diretório de construção e, em seguida, make
irá gerar arquivos nele também. Não há risco de misturar versões diferentes, desde que o qmake nunca seja executado no diretório de origem (se for, é melhor limpar bem!).
E quando feito assim, o .pro
arquivo da resposta aceita atualmente é ainda mais simples:
HEADERS += src/dialogs.h
SOURCES += src/main.cpp \
src/dialogs.cpp