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 意図した通りに追加されました。