Я пытаюсь скомпилировать проект в моей системе, используя qmake.Некоторые зависимости проекта не установлены, но находятся в моем домашнем каталоге, примерно так: файлы libs: /home/myusername/local/lib
и мой каталог include /home/myusername/local/include
.Внутри каталога include у меня есть папка qjson
с необходимыми заголовками из библиотеки.В папке lib у меня есть файлы libqjson.so libqjson.so.0 libqjson.so.0.7.1
.
Мой файл проекта qmake выглядит примерно так:
linux-g++ {
INCLUDEPATH += /home/myusername/local/include/
LIBS += -L/home/myusername/local/lib/ -lqjson
}
и сгенерированный make-файл выдаст такие команды:
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB \
-DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qbuzz \
-I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui \
-I/usr/include/qt4 -I/home/myusername/local/include/ -I. -I. -I../myproject -I. \
-o qbuzz-result.o ../myproject/myfile.cc
Понятно, что мой каталог include находится в опции -I
gcc.myfile.cc
содержит следующее включение:
#include <qjson/parser.h>
Однако после запуска make я получаю сообщение об ошибке:
../myproject/myfile.cc:2:26: fatal error: qjson/parser.h: No such file or directory
compilation terminated.
Теперь, если я изменю переменную среды CPLUS_INCLUDE_PATH
чтобы добавить мой локальный файл включения, у меня нет проблем там, но на этапе компоновщика я получил ошибку:
/usr/bin/ld: cannot find -lqjson
collect2: ld returned 1 exit status
Даже при том, что команда компоновщика была:
g++ -omyprogram main.o mainwindow.o myfile.o moc_mainwindow.o -L/usr/lib \
-L/home/myusername/local/lib/ -lqjson -lQtGui -lQtNetwork -lQtCore -lpthread
Я такжеможно обойти изменение переменной окружения LIBRARY_PATH
.Однако я ищу решение, которое основано на изменении как можно меньшего количества переменных среды, и, в конце концов, почему есть опции -L и -I?
Я работаю на Windows без проблем, используя MinGW g ++.