qmakeを使用して自分のシステムでプロジェクトをコンパイルしようとしています。プロジェクトのいくつかの依存関係はインストールされていませんが、私のホームディレクトリにあります。libsファイル:/home/myusername/local/lib
と私のインクルードディレクトリ/home/myusername/local/include
です。インクルードディレクトリの中には、ライブラリから必要なヘッダを持つqjson
というフォルダがあります。 libフォルダに私はファイルlibqjson.so libqjson.so.0 libqjson.so.0.7.1
を持っています。gcc -Iと-Lオプションが動作しないようです。
私のqmakeのプロジェクトファイルは、次のようなものになります。
linux-g++ {
INCLUDEPATH += /home/myusername/local/include/
LIBS += -L/home/myusername/local/lib/ -lqjson
}
をして生成されたメイクファイルはこの1つのようなコマンドを生成します:
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
私がディレクトリ-I
オプションである含めることは明らかですgccの私は、今
../myproject/myfile.cc:2:26: fatal error: qjson/parser.h: No such file or directory
compilation terminated.
、私は私の地元を追加するために、環境変数CPLUS_INCLUDE_PATH
を変更した場合、ファイルが含まれます。ただし、makeを実行した後、私はエラーを取得する
#include <qjson/parser.h>
:myfile.cc
はこのように含めるには含まれていそこに問題はないが、リンカ段階で、私はエラーを得た:
/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がありますか?
私はMinGW g ++を使用しても問題なくWindowsで動作します。
男これは確かに心配です。しかし、私は何も推測していません – marinara
LIBRARY_PATHまたはLD_LIBRARY_PATH? –