2011-08-03 8 views
0

私はLinuxのドライブをコンパイルすると、私は問題を見つけるが含まれるよう$(シェルPWD)/ XXXを使用することはできません、コンパイルエラー相対$によってパス(シェルPWD)が、それは動作しません:Linuxのドライバは、パス

MOD_INC=$(shell pwd)/include 
EXTRA_CFLAGS+=-I$(MOD_INC) 

私が見つかりました:$(シェルPWD)== /ホーム/ MYNAME/prj_svn

Bのabosulteパスは、それが動作します:

MOD_INC=/home/myname/prj_svn/include 
EXTRA_CFLAGS+=-I$(MOD_INC) 

Cは、パスを定義し、それが動作します:

PRJ_PATH=/home/myname/prj_svn 
MOD_INC=$(PRJ_PATH)/include 
EXTRA_CFLAGS+=-I$(MOD_INC) 

私はなぜか分からないのですか?

私はそれらをアプリケーションプロジェクトで試してみると、それらのすべてが動作することができます。

ご協力いただきありがとうございます。

+0

さて、Makeを実行するときの現在の作業ディレクトリは何ですか? –

+0

現在のディレクトリは:/ home/myname/prj_svn – pilipala

+0

「動作しません」という意味はどうですか?それは何をするためのものか? 'EXTRA_CFLAGS'に何が追加されますか? – Beta

答えて

1

Makeはビルド時にかなりのディレクトリ変更を行います。私はいつでも特定の時点でpwdの値に頼りたくはありません。

MODULE_HOMEという名前の環境変数を定義し、/home/myname/prj_svnに設定し、それに関連するすべてのパスを記述する方法はありますか?

+0

が好きですが、誰かが自分のコードをチェックアウトした場合、コンパイルを変更してコンパイルする必要があります。 – pilipala

+0

makefileを駆動するシェルスクリプトから設定できます。これに似ていますが、より洗練されたものは、 'top_builddir'のような[プリセット出力変数](http://www.gnu.org/s/hello/manual/autoconf/Preset-Output-Variables.html)を持つautoconfで起こります。ここで使うことができます。 –

+0

はい、私はそれがこの問題の良い解決策だと思います、ありがとうございます。 – pilipala

関連する問題