2011-02-08 7 views
2

私のC++アプリケーションをdebianとubuntuで交互に開発し、informixデータベースのライブラリルートディレクトリは両方のディストリビューションで異なります。Makefileではパスが存在すればパス変数を割り当てます

私はそれを毎回手動で変更する必要はないので、Makefileでそれを扱う素晴らしい方法は何ですか? ディレクトリの存在をテストすることを考えたので、unameまたはlsb-releaseまたはhostnameを確認するのが一般的です。

条件での割り当ての構文はどのようになっていますか?私は、try#2

// prepare 
INFORMIXDIR_DEB=/usr/informix 
INFORMIXDIR_UBU=/opt/IBM/informix 

// tried #1 
$(INFORMIXDIR_DEB): 
     if [ -d $(INFORMIXDIR_DEB) ]; then INFORMIXDIR=$INFORMIXDIR_DEB; fi; 

// tried #2 
$(INFORMIXDIR_DEB): 
     INFORMIXDIR=$(INFORMIXDIR_DEB) 

// tried #3 
if [ -d $(INFORMIXDIR_UBU) ] ; 
    then INFORMIXDIR=$INFORMIXDIR_UBU; 
fi; 

答えて

3

に「行方不明セパレーター」のエラーが表示されます。しかし、あなたがGNU makeを使用している場合、あなたは、あなたが好きなテストにシェルコマンドを記述し、結果を変数に割り当て、ifeqと遊ぶことができますか?

+0

より正確には:「結果を変数に割り当てる」?どのようにテストcond。後にそれを書くか? – groovehunter

+0

@groovehunter:$(シェル)もの。完全な情報については、gmakeのマニュアルを参照してください。私はシェルに渡された完全なロジックのようなものを意味します:$(shell test -d blabla && echo blablaexists)。 –

+1

今、私はそれを得ました。 'INFORMIXDIR = $(シェルテスト-d/opt/IBM/informix && echo/opt/IBM/informix)' 「シェル」の前に空白はありません! :) – groovehunter

関連する問題