2014-02-15 6 views
2

AimВключить Makefile в QMAKE, наследуя свойства

Я хотел бы начать проект Qt, используя другой проект C++ в качестве отправной точки, что я положил в подкаталоге.

Внутри /Qt Project/C++ sub-project есть файл Makefile с его определением и переменными и флагами и источником (в разных поддиреках).

Я хотел бы, чтобы qt-проект включил этот make-файл и смог скомпилировать все объекты подпроекта и связать их вместе (со своими флагами и библиотеками) в новом проекте.

Попытки

Я пытался использовать, внутри .pro, mytarget.commands = make -C ./sub-project -f makefile, , но это просто использует Makefile, и, таким образом, не может связать вместе с новым основным исходным кодом, который использует Qt.

Я попытался связать отдельно все подпроекты в одном объекте, но ld или ar не распознает флаги.

ответ

2

Альтернативный подход

Вы пробовали CMake? Просто сделайте центральный файл CMakeLists.txt со всеми необходимыми определениями, а затем добавьте файлы CMakeLists.txt, которые вы поместите в любую папку Qt и C++. Таким образом, вы будете иметь согласованную конфигурацию без смешивания Makefiles и qmake.

Здесь вы найдете Qt + CMake tutorial.

+0

Это подразумевает, что я должен переписать make-файл? –

+1

Вы посмотрели ссылки, которые я опубликовал в своем ответе? Вам нужно будет заменить ваш make-файл CMakeLists.txt CMake. CMake имеет собственный метаязык для описания конфигурации сборки. Он обрабатывает CMakeLists.txt и создает Make-файлы. Вы автоматически получите чистые цели и т. Д. Он предоставляет некоторые вспомогательные блоки для Qt, например, для включения сетевой библиотеки и т. Д. Еще один [учебник] (http://www.cmake.org/Wiki/CMake/Tutorials/Qt). Этот [SO ответ] (http://stackoverflow.com/questions/21654948/converting-a-visual-studio-makefile-to-a-linux-makefile/21656515#21656515) содержит пример вызова CMake. – yegorich

+1

спасибо, но, если возможно, я предпочитаю не переписывать make-файл, хотя CMake кажется довольно эффективным, и я определенно буду учитывать его в моих будущих личных проектах. –

Смежные вопросы