2011-02-09 9 views
1

main.cppファイルで使用したいクラスファイル(ヘッダーとcpp)があります。私は(私のmain.cppに、現在のディレクトリから)qmakeのプロジェクトファイルを生成し、とヘッダとCPPを追加しました:Qmakeプロジェクトファイル

HEADERS += $$quote(/home/myusername/projects/src/myclass.h) 
SOURCES += $$quote(/home/myusername/projects/src/myclass.cpp) 
SOURCES += main.cpp 

私はメイクファイルを実行すると、それは私の一部に到達するまで、動作しているようです私は本当に基本的な間違いをしているように感じるが、私はそれを把握することができないようだ。

+0

なぜ引用符を使用しますか? – Shinnok

+0

私は自分のパスにスペースがあり、qtの例はスペースを考慮する最も良い方法として提案しています。彼らはスペースのために "\"を使用することが償却されたと述べた。 – shawalli

+0

スペースが表示されません。そして、私は二度見ました。 – TonyK

答えて

4

まず、プロジェクトファイルで絶対パスを使用することは間違いです。

このクラスがプロジェクトの一部であるが別のディレクトリにある場合は、#include "relative/path/myclass.h"構文を使用して、プロジェクトファイルと#includeディレクティブの両方の相対パスを使用します。

そのクラスは、プロジェクトの一部でない場合は、次のオプションでqmakeを使用し、その後、ライブラリとしてコンパイルする必要があります

qmake INCLUDEPATH+=/path/to/the/header LIBS+=-L/path/to/the/library 

とプロジェクトファイルにライブラリ名を追加します。

LIBS += -llibraryname 

クラスを#include <myclass.h>として含めることができます。<>の構文に注意してください。

ワークステーション固有のものはコマンドラインに行きますが、ワークステーションに依存しないライブラリ名はプロジェクトファイルに移動することに注意してください。

qmake MYLIB_PATH=/home/myusername/mylib 
0

私は終わった:あなたがしたい場合、あなたはまだ、コマンドラインからのパスを上書きすることができ、その後

unix { # default path for the Unix systems 
    isEmpty(MYLIB_PATH): MYLIB_PATH = /usr/local 
} 
INCLUDEPATH += $$MYLIB_PATH/include 
LIBS += -L$$MYLIB_PATH/lib 

:あなたには、いくつかの賢明なデフォルトの場所を提供したい場合は、次のトリックを使用することができます@ Sergey Tachenovの助けを借りてそれを理解する。私は絶対パスから相対パスに "../"を使って変更しました。

HEADERS += ../src/classfile.h 
SOURCES += ../src/classfile.cpp 
SOURCES += main.cpp 

私はまた、main.cppにを変更し、それはこれらの変更を行った後に

#include "../src/classfile.h" 

たように、それがコンパイルされ、正しく実行されたファイルが含まれています。

ありがとうございます!

+2

@ Sergeyの答えは役に立ちましたので、それを受け入れるべきです。 –