我的開源項目分發了一個Makefile。只要用戶安裝了Boost和OpenSSL,「make」本身就可以正常工作。如果不是,他會得到一個編譯錯誤。Makefile:測試頭文件的目標
我想向用戶顯示一條錯誤消息,說明如何解決問題,而不是讓他從編譯器輸出中辨別出問題。
我已經放在一起嵌入一個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和重寫我的Makefiles並不感到興奮。
當然,現在不是學習Autotools的好時機,但考慮使用CMake。 –