2011-09-08 21 views
1

qmakeの仕組みがわからなくなってしまいました。 は、私は次のような構造を持つプロジェクトたい:qmake .proファイルが正しく解析されず、LD_LIBRARY_PATHが生成されない

ルートを

  • ビン
    • testjson
  • libに
    • libjson.so
  • SRC
    • testjson.cpp

は私が望んでいたすべてのは、JSONライブラリーを試験することでした。 Qt Creator 2.3.0で新しい空のプロジェクトを作成し、実行可能ファイルが実行されるようにすべての設定を設定しました。私が望むものをテストし、アプリケーションを閉じました。

後でQt Creatorを再度開いたときに、.proファイルを読み込んで驚きました。プロジェクトを実行しようとすると「No executable specified」というメッセージが表示されます。 :|この場合、私はプロジェクトタブに行き、手動で実行可能ファイルを選択しましたが、期待通りに実行しようとしたときに、次のエラーメッセージが表示されます。共有ライブラリをロード中にエラーが発生しました:libjson.so:共有オブジェクトファイルを開くことができません:ファイルまたはディレクトリー "と呼びます。 LD_LIBRARY_PATHが設定されていないので、期待されていました(cliから実行するようなものです)。

私はselectig Runタブを使用していたときに初めてプロジェクトタブに.proファイルが正しく解析されていないように見えました。「Parsing .pro file」と実行中です。 configがいっぱいになってグレー表示されたので、.proファイルの解析後にQt CreatorによってLD_LIBRARY_PATHが追加されたことを意味します。

私の探求は、なぜ.proファイルが初めて正しく解析されたのですか?

!include(../../common.pri){ 
    error(Couldn't find the common.pri file!) 
} 

TEMPLATE = app 

SOURCES += testjson.cpp 
CONFIG += console 
TARGET = testjson 

CONFIG(release, debug|release) { 
    DESTDIR = $$BinaryDir/Release 
} else { 
    DESTDIR = $$BinaryDir/Debug 
} 

LIBS += -L$$LibraryDir -ljson 

INCLUDEPATH += $$DefaultInclude 
DEPENDPATH += $$LibraryDir 

PS:

はここ.PROファイルのソリューションは、手動で、建物の環境にLD_LIBRARY_PATHを追加することですが、私はそれを行うには、この権利ではない方法を見つけます。

答えて

3

qmake(.pro)ファイルによって制御されるものと実行時環境によって制御されるものとの間に混乱があると思います。 .proファイルは、実行環境ではなくBUILD環境のみを指定します。 .proファイルは、ビルド処理中にのみ使用されます。

コマンドラインからでもQt Creatorからでも、ビルドコードを実行すると、RUNTIME環境が扱われます。シェルからプログラムを実行しようとすると、特にLD_LIBRARY_PATHを指定する必要があります。 Qt Creatorの中から、同じことをしなければなりません。ランタイム環境を設定するには

[私だけのQt Creatorを2.2はここにインストールされているが、それは2.3に非常に類似していなければならない]

  1. は、左のツールバーのプロジェクトアイコンを選択します。
  2. 「実行設定」
  3. [実行設定]ページで[実行環境]設定に移動し、[詳細]をクリックして環境の詳細を表示します。
  4. "追加..."をクリックし、適切な設定で "LD_LIBRARY_PATH"を追加します。

設定が完了すると、設定がプロジェクトに保存されます。 [設定は実際には ".pro"ファイルではなく ".pro"ファイルではなく ".user"というファイルで保存されます]

プロジェクトを実行すると、[設定の実行]で設定した環境が使用されますアプリケーションは正しいLD_LIBRARY_PATHで開始する必要があります。

+0

PSで述べたように私はすでに解決策を知っていましたが、手動でLD_LIBRARY_PATHを手動で追加するのは間違いです。翌日、私は最初からプロジェクトを再構築し、ライブラリを追加し、すべてが完璧に機能しました。私はまだ、第1版で ".proファイルを解析できませんでした"というメッセージが出てきた理由を知りません。おそらくそれは.pro.userファイルと関係がありました。しかし、すべてがうまくいくようになりました。 –

+0

「ビルド環境にLD_LIBRARY_PATHを追加する」という解決策は、ビルド環境を使用するデフォルトの実行環境設定を使用している可能性が高いためです。これは、あなたの問題を解決する副次的な効果です。これは主なやり方です。 – jwernerny