QtCreator — Невозможно связать статическую библиотеку (ошибка ld)

У меня проблема при использовании QtCreator 3.0.1 с Qt 5.2.1 в Linux. Я пытаюсь скомпилировать свой проект, используя встроенную в QtCreator функцию «build», которую, я думаю, выполняет qmake project.pro а потом make, Мой проект использует QScintilla, который я скомпилировал в статическую библиотеку (.a), и включен в каталог моего проекта в qscintilla/Qt4Qt5,

После того, как компиляция завершена, панель вывода компиляции показывает следующее:

/usr/bin/ld: cannot find -lqscintilla2
collect2: error: ld returned 1 exit status

мой .pro файл содержит:

LIBS += -Lqscintilla/Qt4Qt5 -lqscintilla2

Тем не менее, работает qmake а потом make в корневом каталоге проекта через эмулятор терминала работает отлично, а проект компилируется и успешно связывается. Я дважды проверил, что qscintilla/Qt4Qt5 каталог содержит файл libqscintilla2.a,

2

Решение

Поскольку вы, похоже, используете Linux, было бы лучше оставить пакет с вашим дистрибутивом. Установка пакетов, приносящих статические библиотеки в систему, была бы более «ванильной».

Однако, если вы хотите придерживаться принципа сборки в проекте, я бы предложил не отключать теневую сборку и создавать другие обходные пути, имеющие свои собственные ограничения.

Вы можете, например, использовать Переменная $$ OUT_PWD для этой цели, но в общем случае вам нужно будет также указать целевую зависимость между компонентами.

Итак, вы бы написали что-то вроде этого:

LIBS += -L$$OUT_PWD/qscintilla/Qt4Qt5 -lqscintilla2

Пожалуйста, настройте это в соответствии с вашим макетом каталога.

1

Другие решения

Вы также должны добавить строку:

PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a

к вашему .pro-файлу, чтобы статически связать библиотеку.

0

Управляемый, чтобы заставить его работать: в QtCreator, нажмите «Проекты» на левой панели, чтобы открыть вкладку, которая позволяет вам редактировать параметры сборки / запуска / стиля. В разделе Build / General отключите «Shadow build». Это создаст проект в исходном каталоге проекта.

Изменить: см. Ответ @ LaszloPapp для лучшего решения.

0
По вопросам рекламы [email protected]