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,

3 ответа

Решение

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

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

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

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

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

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

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

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

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

PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a

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

Другие вопросы по тегам