Проект QtCreator с несколькими библиотеками и одним exe-файлом

StackOverflow https://stackoverflow.com/questions/1063733

  •  21-08-2019
  •  | 
  •  

Вопрос

Как я уже говорил в предыдущем вопросе, я планирую портировать проект 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, сохраняющие порядок, в котором вы их перечислили, при любых обстоятельствах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top