Tôi đang làm việc trên dự án C++ trên GNU/Linux và tôi đang tìm cách kiểm tra sự tồn tại và khả năng sử dụng của thư viện IBM Informix với các Autotools - cụ thể là, chỉnh sửa configure.in
. Tôi không có kinh nghiệm với Autotools, vì vậy về cơ bản tôi đang chọn từ dự án của configure.in
et al. tập lệnh và sao chép & thay đổi nơi tôi cảm thấy cần phải thay đổi. IOW, tôi đã thích nghi từ văn bản hiện tại trong configure.in
.Làm thế nào để kiểm tra khả năng sử dụng thư viện C++ trong configure.in?
Cho đến nay tôi đã sử dụng thành công AC_CHECK_LIB
trong configure.in
để kiểm tra xem một thư viện nhất định có tồn tại và có thể sử dụng được hay không. Nhưng điều này dường như chỉ hoạt động với các thư viện có chức năng , không phải là các lớp học. Cụ thể, điều này không thành công khi thử nghiệm libifc++.so
thư viện Informix của:
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=""
)
Tôi cũng đã cố gắng sử dụng các kết hợp khác, như ITString::ITString
vv
tôi đã không tìm thấy một chức năng "tinh khiết" trong API Informix (tức là , một trong đó không phải là ngữ cảnh trong một lớp C++). Vì vậy, tôi hy vọng rằng có một cách để sử dụng AC_CHECK_LIB
trong ngữ cảnh này hoặc có một lệnh khác là "autoconf
/configure.in
" cho việc sử dụng cụ thể này.
Cảm ơn trước vì đã phản hồi của bạn.
trình-For-Me. Tôi đã nghĩ về việc làm một cái gì đó như thế này, nhưng nó có vẻ giống như một hack. Ví dụ, tôi không chắc chắn những gì sẽ xảy ra nếu mã được biên dịch lại với một phiên bản thư viện Informix khác (tôi mong đợi tên bị xáo trộn thay đổi). Nhưng này, nó hoạt động! :-) – jbatista
Điều này sẽ tiếp tục hoạt động với phiên bản thư viện mới (giả sử tên lớp và tên phương thức không thay đổi), nhưng có thể bị hỏng nếu phiên bản trình biên dịch của bạn thay đổi và hầu như chắc chắn sẽ bị hỏng nếu ai đó cố biên dịch mã của bạn trên một mã khác phiên bản trình biên dịch hoặc trình biên dịch. –
@Tyler - điểm hợp lệ; Tôi đã nhấn mạnh điều này trong câu trả lời. – DaveR