私のオープンソースプロジェクトはMakefileを配布しています。ユーザーがBoostとOpenSSLをインストールしている限り、「make」自体は正常に機能します。そうでない場合、彼はコンパイルエラーを受け取ります。
コンパイラの出力から問題を識別させるのではなく、修正方法の説明を含むエラーメッセージをユーザーに表示したいと思います。
コアコードをビルドする前に、前提条件のヘッダーファイルが存在するかどうかを検証するために、すばやくダーティなコンパイルを実行するMakefile内に埋め込む小さなスクリプトをまとめました。エラーメッセージが表示され、コードがコンパイルされない場合はコンパイルが中止されます。うまくいくようです。
# BOOST_INCLUDE := -I/home/jselbie/boost_1_51_0
all: myapp
testforboost.o:
@echo "Testing for the presence of Boost header files..."
@rm -f testforboost.o
@echo "#include <boost/shared_ptr.hpp> " | $(CXX) $(BOOST_INCLUDE) -x c++ -c - -o testforboost.o 2>testerr; true
@rm -f testerr
@if [ -e testforboost.o ];\
then \
echo "Validated Boost header files are available";\
else \
echo "* ********************************************";\
echo "* Error: Boost header files are not avaialble";\
echo "* Consult the README file on how to fix";\
echo "* ********************************************";\
exit 1;\
fi
myapp: testforboost.o
$(CXX) $(BOOST_INCLUDE) myapp.cpp -o myapp
私のスクリプトはこれを行うための良い方法ですか?私はそれがLinux(Solaris、BSD、MacOS)を超えて移植可能であると仮定しています。または、これを行うための他の標準的な方法はありますか?Autotoolsでも同様のことができることは知っていますが、Autotoolsのすべてを学び、Makefileを書き直すことにそれほど興奮していません。