LSI Jiu-Jitsu

電子工作とブラジリアン柔術

Makefileにサーチパスを追加

コンパイルしたexeをMakefileから実行させたい時などで、実行時に一時的にサーチパスを追加する方法です。

シェルスクリプトと同じ書き方でいけると思いきや意外と手こずりました。

やりたことは make run とした時に、ホームにあるOpenCVライブラリを $LD_LIBRARY_PATH に追加してexeを実行することです。

何種類か書いてようやく納得できる書き方が見つかりましたのでまとめてみます。

 

■ その1

シェルスクリプトのように再帰的に後ろに追加

export LD_LIBRARY_PATH = $(LD_LIBRARY_PATH):$(DIR_OPENCV_LIB)

run:
    ./exe

→ makeエラー

Makefile:xx: *** 再帰的変数 `LD_LIBRARY_PATH' が(最終的に)それ自身を参照しています. 中止.

 

■ その2

"+=" で追加

export LD_LIBRARY_PATH += $(DIR_OPENCV_LIB)

run:
    ./exe

→ 実行エラー

/usr/lib:/usr/local/lib ~/tool/opencv/lib

パスがコロンで区切られていないので見つからない。

 

■ その3

"+=" に ":" を追加

export LD_LIBRARY_PATH += :$(DIR_OPENCV_LIB)

run:
    ./exe

→ とりあえずOK

/usr/lib:/usr/local/lib :~/tool/opencv/lib

コロンが付いたことで認識できるようになったけど空白が気になる・・。

 

■ その4

echoさせてから後ろに追加

export LD_LIBRARY_PATH = $(shell echo $$LD_LIBRARY_PATH):$(DIR_OPENCV_LIB)

run:
    ./exe

→ OK!

/usr/lib:/usr/local/lib:~/tool/opencv/lib

意図した通りに追加されました。