Проект QtCreator с несколькими библиотеками и одним exe-файлом
Вопрос
Как я уже говорил в предыдущем вопросе, я планирую портировать проект Qt с VС++ на QtCreator.
Проект состоит из 4 подпроектов:3 из них — библиотеки, а последний — exe.Подпроекты являются многоуровневыми, что означает, что каждый уровень имеет зависимости времени компиляции и связывания с уровнями, расположенными под ним.
Файлы организованы следующим образом:
root
lib1
lib2
lib3
main
Каждый из подпроектов в QtCreator я создал с нуля.Каждая папка содержит файл pro с тем же именем (например:lib1 -> lib1.pro).Используя этот подход, я создал все проекты, кроме последнего, который должен связать исполняемый файл.Я получал ошибки компоновщика, которые я исправил, вручную отредактировав файл pro и добавив код ниже:
LIBS += ../path/lib1.a \
../path/lib2.a \
../path/lib3.a
Все в порядке, за исключением того, что теперь lib3 жалуется, что не может найти символы из lib2 и lib1.Добавление LIBS в файл lib2.pro не работает.
У меня такое ощущение, что я не понимаю, как QtCreator работает с библиотеками и исполняемыми файлами.Как бы вы организовали такой проект, чтобы он правильно компилировался и компоновался?
Решение
Поработав еще немного над проблемой, я вспомнил, что для цепочки инструментов GCC важен порядок параметров компоновщика.
Изменение записей LIBS помогло.
Другие советы
Рад видеть, что вы нашли ответ.Вы также можете добавить:
CONFIG += ordered
в файл .pro вашего корневого каталога (он действителен только в профиле «SUBDIRS»).Это заставляет qmake генерировать файлы Makefile, сохраняющие порядок, в котором вы их перечислили, при любых обстоятельствах.