У меня проблема при использовании 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
,
Поскольку вы, похоже, используете Linux, было бы лучше оставить пакет с вашим дистрибутивом. Установка пакетов, приносящих статические библиотеки в систему, была бы более «ванильной».
Однако, если вы хотите придерживаться принципа сборки в проекте, я бы предложил не отключать теневую сборку и создавать другие обходные пути, имеющие свои собственные ограничения.
Вы можете, например, использовать Переменная $$ OUT_PWD для этой цели, но в общем случае вам нужно будет также указать целевую зависимость между компонентами.
Итак, вы бы написали что-то вроде этого:
LIBS += -L$$OUT_PWD/qscintilla/Qt4Qt5 -lqscintilla2
Пожалуйста, настройте это в соответствии с вашим макетом каталога.
Вы также должны добавить строку:
PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a
к вашему .pro-файлу, чтобы статически связать библиотеку.
Управляемый, чтобы заставить его работать: в QtCreator, нажмите «Проекты» на левой панели, чтобы открыть вкладку, которая позволяет вам редактировать параметры сборки / запуска / стиля. В разделе Build / General отключите «Shadow build». Это создаст проект в исходном каталоге проекта.
Изменить: см. Ответ @ LaszloPapp для лучшего решения.