मैं जीएनयू/लिनक्स पर सी ++ प्रोजेक्ट पर काम कर रहा हूं और मैं ऑटोोटूल के साथ आईबीएम इनफॉर्मिक्स की लाइब्रेरी के अस्तित्व और उपयोगिता का परीक्षण करने का एक तरीका ढूंढ रहा हूं - अर्थात् configure.in
संपादित करना। मुझे ऑटोटूल के साथ अनुभव नहीं है, इसलिए मूल रूप से मैं प्रोजेक्ट के configure.in
et al से उठा रहा हूं। स्क्रिप्ट और प्रतिलिपि & बदल रहा है जहां मुझे लगता है कि मुझे बदलने की जरूरत है। IOW, मैं मौजूदा पाठ से configure.in
में अनुकूलन कर रहा हूं।config.in में सी ++ लाइब्रेरी उपयोगिता का परीक्षण कैसे करें?
अब तक मैं AC_CHECK_LIB
configure.in
में सफलतापूर्वक उपयोग कर रहा हूं यह जांचने के लिए कि कोई निश्चित लाइब्रेरी मौजूद है और उपयोग योग्य है या नहीं। लेकिन यह केवल फ़ंक्शंस के साथ पुस्तकालयों के साथ काम करता प्रतीत होता है, उदाहरण के लिए नहीं कक्षाएं। अर्थात्, इस जब इन्फोर्मिक्स के libifc++.so
पुस्तकालय का परीक्षण विफल रहता है:
AC_CHECK_LIB(ifc++, ITString,
INFORMIX_LIB="-L$INFORMIX_LIB_LOCATION/c++ -lifc++ -L$INFORMIX_LIB_LOCATION -L$INFORMIX_LIB_LOCATION/dmi -L$INFORMIX_LIB_LOCATION/esql -lifdmi -lifsql -lifasf -lifgen -lifos -lifgls -lifglx $INFORMIX_LIB_LOCATION/esql/checkapi.o -lm -ldl -lcrypt -lnsl",
echo "* WARNING: libifc++.so not found!"
INFORMIX_INC=""
INFORMIX_LIB=""
)
मैं भी ITString::ITString
की तरह अन्य संयोजन का उपयोग कर, की कोशिश की है, आदि
मैं इन्फोर्मिक्स के एपीआई में एक "शुद्ध" समारोह नहीं मिला है (यानी , एक जिसे सी ++ वर्ग में संदर्भित नहीं किया गया है)। तो मैं उम्मीद कर रहा हूं कि इस संदर्भ में AC_CHECK_LIB
का उपयोग करने का कोई तरीका है, या इस विशिष्ट उपयोग के लिए autoconf
/configure.in
"कमांड" है।
आपकी प्रतिक्रिया के लिए अग्रिम धन्यवाद।
वर्क्स-लिए-Me। मैंने ऐसा कुछ करने के बारे में सोचा था, लेकिन यह एक हैक की तरह लग रहा था। उदाहरण के लिए, मुझे यकीन नहीं है कि क्या होता है यदि कोड को एक अलग इनफॉर्मिक्स लाइब्रेरी संस्करण के साथ पुन: संकलित किया जाता है (मुझे लगता है कि उलझन में नाम बदलने की उम्मीद है)। लेकिन हे, यह काम करता है! :-) – jbatista
यह एक नए लाइब्रेरी संस्करण (क्लास और विधि नामों को बदलने में नहीं लगता है) के साथ काम करना जारी रखना चाहिए, लेकिन यदि आपका कंपाइलर संस्करण बदलता है तो टूट सकता है, और अगर कोई और आपके कोड को दूसरे पर संकलित करने का प्रयास करता है तो लगभग निश्चित रूप से तोड़ देगा कंपाइलर या कंपाइलर संस्करण। –
@ टाइयलर - एक मान्य बिंदु; मैंने जवाब में इसे हाइलाइट किया है। – DaveR