/ / कैसे DEB पैकेज में लाइब्रेरी फ़ाइल बनाने के लिए और qmake का उपयोग करके मेरे सिस्टम में नहीं? - linux, qt, build, debian, deb

कैसे qmake का उपयोग करते हुए लाइब्रेरी फ़ाइल को DEB पैकेज में और मेरे सिस्टम में नहीं बनाया जाए? - linux, qt, build, debian, deb

मैं अपनी पहली लाइब्रेरी बनाने की कोशिश कर रहा हूं।

पुस्तकालयों को विभिन्न आर्किटेक्चर में स्थापित किया जाना चाहिए। I386 के लिए निर्मित एक पुस्तकालय आमतौर पर / usr / lib / i386-linux-gnu / पर जाता है, लेकिन अगर इसे amd64 के लिए बनाया गया है तो यह / usr / lib / amd64-linux-gnu / पर जाता है

तो, मेरे डेबियन / नियम फ़ाइल

#!/usr/bin/make -f

export DH_VERBOSE=1

%:
dh $@

override_dh_auto_configure:
dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH)

मैं अपने .pro फ़ाइल के अंदर LIB_INSTALL_DIR ले पा रहा हूँ:

isEmpty(LIB_INSTALL_DIR){
message("LIB_INSTALL_DIR is empty. It shouldn"t be if this isn"t an example build.")
DESTDIR = .
} else {
DESTDIR = $$LIB_INSTALL_DIR
}

message(Library will be placed at $$DESTDIR)

बात यह है कि DESTDIR भेजने की कोशिश करता हैमेरे अपने फाइल सिस्टम में लाइब्रेरी और इसे डिबेट पैकेज में नहीं बनाना है। उदाहरण के लिए, यह इसे अपने / usr / lib / i386-linux-gnu / पर भेजने की कोशिश करता है, लेकिन यह असमर्थ है, क्योंकि यह ऐसा करने की अनुमति नहीं है।

दूसरी ओर,

target.files = *.so
target.path = $$LIB_INSTALL_DIR
INSTALLS+=target

साथ ही असफल हो जाता है। के अंदर ।deb पैकेज मैं निर्मित / usr / lib / i386-linux-gnu / फ़ोल्डर पा सकते हैं, लेकिन यह खाली है, सिर्फ इसलिए कि INSTALLS उन इंस्टॉलेशन को चलाता है जो इसे समय बनाने से पहले करना है, इसके बाद नहीं।

अंत में, मैं डेबियन / इनस्टॉल के अंदर किसी भी चर को पारित नहीं कर सकता, ऐसा कुछ जो बहुत सुविधाजनक होगा।

मुझे पता है कि यह एक क्यूटी प्रश्न भी हो सकता है, लेकिन मुझे लगता है कि यह पूछने के लिए सही जगह है क्योंकि मुझे इसे संभालने के लिए कुछ अन्य विधि का उपयोग करने का सुझाव दिया जा सकता है।

उत्तर:

जवाब के लिए 0 № 1

DESTDIR स्थापित लक्ष्य के लिए एक विशेष अर्थ है: यह एक वैकल्पिक रूट-निर्देशिका के साथ वास्तविक स्थापित लक्ष्यों को उपसर्ग करने के लिए उपयोग किया जाता है। डेबियन में सामान्य बिल्ड-सिस्टम सेटिंग द्वारा इस सुविधा का उपयोग करते हैं DESTDIR सेवा मेरे /path/where/the/package/is/built/debian/tmp या इसी तरह - तो इसका मतलब है कि एक ठीक से काम कर रहा है DESTDIR है महत्वपूर्ण अपने सिस्टम के बजाय फाइल को पैकेज में स्थापित करने के लिए

आप एक नज़र रखना चाहते हैं कि यह अन्य पैकेजों द्वारा कैसे संभाला जाता है dh, CMake और में स्थापित करें /usr/lib/<arch>.

एक त्वरित खोज से पता चला कि ए libssh2 इस तरह का एक पैकेज है, और यह निम्नलिखित का उपयोग करता है debian/rules:

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
CONFIGURE_EXTRA_FLAGS += --libdir=$${prefix}/lib/$(DEB_HOST_MULTIARCH)

%:
dh $@ --with autoreconf

override_dh_auto_configure:
dh_auto_configure -- $(CONFIGURE_EXTRA_FLAGS)

जवाब के लिए 0 № 2

आपने अपनी परियोजना फ़ाइल के अंदर DESTDIR को संपादित करने की आवश्यकता नहीं जीती।

महज प्रयोग करें:

target.path = $$LIB_INSTALL_DIR

INSTALLS += target