Próbuję skompilować projekt w moim systemie przy użyciu qmake. Niektóre zależności projektu nie są zainstalowane, ale znajdują się w moim katalogu domowym, mniej więcej tak: pliki libs: /home/myusername/local/lib
i mój obejmuje katalog /home/myusername/local/include
. Wewnątrz katalogu include mam folder, qjson
z potrzebnymi nagłówkami z biblioteki. W folderze lib mam pliki libqjson.so libqjson.so.0 libqjson.so.0.7.1
.Opcje gcc -I i -L nie działają.
Mój plik projektu qmake wygląda mniej więcej tak:
linux-g++ {
INCLUDEPATH += /home/myusername/local/include/
LIBS += -L/home/myusername/local/lib/ -lqjson
}
a wygenerowany makefile będzie produkować poleceń takich jak ten:
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
Jest oczywiste, że mój obejmują katalog jest w opcji -I
z gcc. myfile.cc
zawiera m.in. takie jak ten:
#include <qjson/parser.h>
Jednak po uruchomieniu zrobić, pojawia się błąd:
../myproject/myfile.cc:2:26: fatal error: qjson/parser.h: No such file or directory
compilation terminated.
Teraz, jeśli zmodyfikować zmienną środowiskową CPLUS_INCLUDE_PATH
dodać moje lokalnego pliku include, ja nie ma problemów tam, ale w fazie łącznikowej mam błąd:
/usr/bin/ld: cannot find -lqjson
collect2: ld returned 1 exit status
choć polecenie łącznikiem było:
g++ -omyprogram main.o mainwindow.o myfile.o moc_mainwindow.o -L/usr/lib \
-L/home/myusername/local/lib/ -lqjson -lQtGui -lQtNetwork -lQtCore -lpthread
Mogę również obejść modyfikację zmiennej środowiskowej LIBRARY_PATH
. Jednak szukam rozwiązania, które polega na modyfikowaniu jak najmniejszej liczby zmiennych środowiskowych, a ostatecznie dlaczego są dostępne opcje -L i -I?
Pracuję w systemie Windows bez problemów za pomocą MinGW g ++.
człowiek to z pewnością niepokoi. ale mam tylko guzy – marinara
LIBRARY_PATH lub LD_LIBRARY_PATH? –