2013-01-08 9 views
5

का उपयोग करने वाले परीक्षणों के लिए बैश स्क्रिप्ट लॉन्च करने के लिए "चेक करें" का उपयोग करें, मैं अपने सी ++ पैकेज के लिए ऑटोटूल का उपयोग कर रहा हूं। मेरे पैकेज में एक बाइनरी है, जिसे उदाहरण के लिए "myprog" कहा जाता है। मैंने एक बैश स्क्रिप्ट लिखा, "test.bash", जिसमें एक कार्यात्मक परीक्षण होता है। इस स्क्रिप्ट में 4 चरण हैं: (1) इनपुट फाइलें बनाएं, (2) अपेक्षित आउटपुट फाइलें उत्पन्न करें, (3) इनपुट फाइलों पर "myprog" लॉन्च करें, (4) अपेक्षित आउटपुट के साथ "प्रोग" के आउटपुट की तुलना करें।प्रोग्राम बाइनरी

चरण 3 में, "test.bash" को "myprog" के पथ को जानने की आवश्यकता है। अगर मैं स्टैंडअलोन पर "test.bash" लॉन्च करता हूं, तो मैं कमांड लाइन पर एक विकल्प के रूप में "myprog" का मार्ग दे सकता हूं। लेकिन make check या make distcheck का उपयोग करते समय मैं क्या कर सकता हूं?

मैं manual of Autotools/Automake पढ़ रहा हूं। मुझे लगता है कि configure द्वारा निर्धारित चर का उपयोग करके एक तरीका है, लेकिन मुझे नहीं लगता कि उनका उपयोग कैसे करें, इसलिए किसी भी समाधान का बहुत स्वागत है!

उत्तर

5

आप TESTS वैरिएबल Makefile.am में उपयोग कर सकते हैं और AM_TESTS_ENVIRONMENT वैरिएबल को पास करने के लिए विकल्प सेट कर सकते हैं या बैश स्क्रिप्ट के लिए एक पर्यावरण चर सेट कर सकते हैं। यह autotools मैनुअल की सामान्य खतरनाक शैली में, this पृष्ठ पर वर्णित है।

myprog के बाद से स्रोत पेड़ के बाहर बनाया जा सकता है, तो आप एक चर $(top_builddir)/relative/path के उपयोग के लिए स्क्रिप्ट में सेट करें, या निर्देशिका जिसमें स्क्रिप्ट के निष्पादित की जा रही है के लिए pwd आदेश का उपयोग कर सकते हैं।

+1

अंततः मैंने $ (abs_top_builddir) का उपयोग किया, धन्यवाद। ऑटोमैक मेलिंग सूची पर अधिक जानकारी देखें: http://lists.gnu.org/archive/html/automake/2013-01/msg00029.html – tflutre