Попытка связать с внешней статической библиотекой. Но создатель QT компилирует исходные файлы внешней библиотеки

Все это происходит в Ubuntu 18.04 с QT Creator 4.5.2. Проект представляет собой проект виджета QT. Я хочу связать со статически связанной библиотекой C++, созданной в netbeans. Но когда я собираю, QT Creator не просто ссылается на статическую библиотеку, он компилирует файл в библиотеке (game.cpp) и генерирует следующую ошибку.

/home/bobp040653/Scrabble/Programming/ScrabbleLib/Game.cpp:9: ошибка: неопределенная ссылка на `ScrabbleLib::Game::TileBag::tileValues'

Я вообще этого не понимаю. Game.o является частью внешней статически связанной библиотеки. Он отлично компилируется под netbeans. Это потому, что библиотека libscrabblelib.a? Это тип библиотеки, который QT не понимает?

Вот копия файла .pro для моего проекта.

#-------------------------------------------------
#
# Project created by QtCreator 2020-03-03T10:32:12
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = TipTopQTW
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        tiptop.cpp

HEADERS += \
        tiptop.h

FORMS += \
        tiptop.ui

unix:!macx: LIBS += -L$$PWD/../ScrabbleLib/dist/Debug/GNU-Linux/ -lscrabblelib

INCLUDEPATH += $$PWD/../ScrabbleLib
DEPENDPATH += $$PWD/../ScrabbleLib

unix:!macx: PRE_TARGETDEPS += $$PWD/../ScrabbleLib/dist/Debug/GNU-Linux/libscrabblelib.a

person anonymous    schedule 06.03.2020    source источник


Ответы (1)


Вы добавили DEPENDPATH += $$PWD/../ScrabbleLib, который говорит Qt скомпилировать файлы.

person Geoffroy    schedule 06.03.2020
comment
Я закомментировал DEPENDPATH, но система сборки по-прежнему собирает Game.cpp. Я заметил, что он собирает Game.o и Game.d. Я думаю, что Game.d - это файл зависимостей. Кто-нибудь знает, что такое Game.d? Когда netbeans создает библиотеку, он не создает файлы .d. Я хотел бы знать, что здесь происходит. - person anonymous; 08.03.2020