QMake совершенно не годится для Makefile-проектов как минимум потому, что не умеет разрешать зависимости между исходниками. Он не генерирует отдельный файл с зависимостями, а хардкодит их прямо в Makefile, который, естественно не пересоздайтся при смене зависимостей между исходными файлами. Как следствие - проект после нескольких сборок или:
1) Перестанет собираться вообще, прийдётся руками делать make clean. Это лучший вариант развития событий.
2) Соберётся, но не будет запускаться. Это тоже неплохо, так как вы сразу будете знать, что Makefile глюкнул.
3) Соберётся, будет запускаться, но работать неправильно. И вы в жизни не поймёте почему именно.
Эта проблема была три года назад, есть она и сейчас. Воспроизвести элементарно:
1. Создаём файлы:
main.cppC++ (Qt)
int main( int argc, char ** argv )
{
return 0;
}
broken.proC++ (Qt)
CONFIG += console
SOURCES += main.cpp
2. Выполняем:
$ qmake
$ make
$ broken
Всё собирается и отлично работает. Ещё бы. Идём дальше.
3. Добавляем третий файл:
broken.hC++ (Qt)
#include <stdio.h>
inline void printSomething()
{
printf( "Hello!\n" );
}
И подключаем его к main.cpp:
main.cppC++ (Qt)
#include "broken.h"
int main( int argc, char ** argv )
{
printSomething();
return 0;
}
4. Собираем:
$ make
$ broken
> Hello!
Отлично, работает. Идём дальше.
5. Меняем текст в broken.h:
broken.hC++ (Qt)
#include <stdio.h>
inline void printSomething()
{
printf( "Goodbye!\n" );
}
6. И собираем проект:
$ make
$ broken
> Hello!
О Боги! Как такое могло случиться!
И это самый тривиальный пример. В реальной жизни ошибки могут быть такими, что вы их и не отследите. А каждый раз чистить проект или прогонять qmake - это огромный удар по скорости сборки. Так как qmake работает неинкрементально, он каждый раз собирает информацию о проекте и всё заталкивает в один Makefile, вырастающий порой как на дрожжах до мегабайтных размеров. Всё на что годится qmake - собрать пустой проект один раз и проинсталировать его. Для инкрементальной сборки он не годится.
Мой совет: изучайте CMake. Там всё просто. Выше дал ссылки на статьи в Вики.