Ответ 1
LIBS += -L[path to lib] -l[name of lib]
Внимание! это имя файла lib: lib [nameOfLib].a, и вы должны передать только оригинальную часть -l [nameOfLib]
У меня есть время найти документацию, в которой четко объясняется, как использовать статическую библиотеку в Qt Creator.
Я создал и скомпилировал свою статическую библиотеку с помощью Qt Creator (New = > Projects\С++ Library = > Установить тип в "Статически связанная библиотека" ). Он компилирует и выдает ".a файл".
Проблема, с которой я сталкиваюсь, - это когда я пытаюсь использовать библиотеку. У меня есть другой проект, который хотел бы использовать его (# включить файлы в библиотеке и т.д.), Но я не знаю, как правильно установить связь с библиотекой или включить файлы из библиотеки.
LIBS += -L[path to lib] -l[name of lib]
Внимание! это имя файла lib: lib [nameOfLib].a, и вы должны передать только оригинальную часть -l [nameOfLib]
В вашем проекте, который использует библиотеку, сделайте переменную LIBS ссылкой на ваш путь к lib.
Чтобы включить файлы из библиотеки, добавьте папку библиотеки в INCLUDEPATH, а затем выполните обычный #include в своих файлах кода.
например:
# the binary .pro
LIBS += c:/mylibs/math.lib
INCLUDEPATH += c:/mylibs
Отредактировано:
-L сообщает qmake, что путь - это каталог, в котором он может искать библиотеки
-l сообщает, что путь является файлом, но обратите внимание на приведенное ниже наблюдение.
Из qmake docs:
Эта переменная содержит список библиотеки, которые должны быть связаны с проект. Вы можете использовать Unix -l (библиотека) и -L (путь к библиотеке) и qmake сделает правильную вещь с этими библиотеками в Windows (а именно, это означает, что путь библиотеки к компоновщику). Единственным ограничением для этого является библиотека должна существовать, чтобы qmake мог найти в котором находится a -l lib.
Примечание. В Windows, указывая библиотеки с опцией -l, как в приведенном выше например, вызовет библиотеку с номер наивысшей версии, который будет использоваться; например, libmath2.lib может потенциально можно использовать вместо libmathlib. Чтобы избежать этой двусмысленности, мы рекомендуем вам явно укажите библиотеку, которая будет использоваться включая суффикс имени файла .lib.
.. от создателя проекта QT
Вариант
LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME]
не работает, если у вас есть как статические libLIBNAME.a
, так и динамические libLIBNAME.so
libs в той же папке PATH_TO_LIB_DIR
.
В этом случае на моем Linux с QMake v 3.0
динамический по умолчанию связан.
Чтобы установить связь со статическим, вам нужно явно указать его без каких-либо параметров.
LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
Это
LIBS += -L"/some path" -l"somename.a"
или
LIBS += -L/somepath -lsomename.a
или
LIBS += -L/somepath -lsomename"
Это должно быть так же просто, как и получается, но по какой-то причине EXTREMELY трудно найти результат поиска, потому что так много хитов форумов людей, просящих о помощи, и я следил за каждым советом, который я могу получить, но нет помощи...