मैं एक Xbox kinect का उपयोग करने के लिए ओपनकनेक्ट की वेबसाइट से एक साधारण इंस्टॉलेशन कर रहा हूं। समस्या यह है कि OSX वितरण नहीं है और यह माना जाता है कि homebrew आपके लिए इंस्टालेशन का ध्यान रखेगा।
स्थापना के अंतिम चरण पर मैं एक उपयोगी सुराग पर आया कि मेरी स्थापना में क्या गलत है।
मुझे साइट द्वारा बताया गया है। "अगर आपको लिंक करने में कोई समस्या है, तो आपको प्रत्येक लिबफ्रेंनेट लिब के rpath को बदलना होगा [निम्नलिखित कोड का उपयोग करके]"
for i in /opt/local/lib/libfreenect*.dylib; do sudo install_name_tool -id $i $i; done
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_sync.dylib
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_cv.dylib
sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_cv.dylib
for i in glview regview hiview glpclview tiltdemo record cppview cvdemo; do sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/bin/$i; sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/bin/$i; done
मेरा rpath निश्चित रूप से गलत तरीके से सेट किया गया है। और सीएमके के साथ निर्माण करते समय यह माध्यमिक संदेश निश्चित रूप से मेरे संदेह की पुष्टि करता है।
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
fakenect
freenect
freenect_sync
एकमात्र मुद्दा जो मेरे पास है वह यह है कि मेरे ऊपर दिए गए कमांड कार्य नहीं करते हैं। इसका कारण यह है कि मेरा मैक मेरी सभी फाइलों को नीचे रखता है /usr/local/lib/
और नहीं /opt/local/lib/
। मैंने कुछ फाइलों की नकल की usr
सेवा मेरे opt
और इससे लिंकिंग त्रुटियों की संख्या कम हो गई, लेकिन मैं अभी भी कुछ के साथ छोड़ दिया हूं। फिर, उन सभी को पुस्तकालयों के साथ करना होगा opt
जो इस समस्या को हल करना आसान बनाता है।
ऊपर दिए गए कोड के पहले ब्लॉक को ठीक से कैसे निष्पादित किया जाए, इसके लिए कोई मदद!
उप-नोट (समान समस्याएं):
- https://openkinect.org/wiki/Getting_Started#Manual_Build_under_OSX
- OS X के तहत CMake चेतावनी: MACOSX_RPATH निम्नलिखित लक्ष्यों के लिए निर्दिष्ट नहीं है
- क्या आप मुझे यह समझने में मदद कर सकते हैं कि मैक ओएस एक्स में मैक-ओ लाइब्रेरी कैसे काम करते हैं?
उत्तर:
जवाब के लिए 2 № 1यकीन नहीं होता कि यह वास्तव में आपके मामले के लिए मददगार है। लेकिन मैं अक्सर हल करने में सक्षम हूं rpath
उचित के साथ संबंधित समस्याओं cmake
तर्क:
INSTALL_DIR="/where/it/goes"
cmake ..
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR"
-DCMAKE_MACOSX_RPATH=ON
-DCMAKE_INSTALL_RPATH="$INSTALL_DIR/lib"
हर अब और फिर (अगर उदाहरण के लिए परियोजना हाथ में "टी लिंकर गुण ठीक से सेट नहीं है), मुझे अभी भी संलग्न होना है install_name_tool
इंस्टालेशन के बाद। उदाहरण के लिए:
install_name_tool -change
@rpath/QtWidgets.framework/Versions/5/QtWidgets
/opt/dev/lib/qt/QtWidgets.framework/Versions/5/QtWidgets
"$INSTALL_DIR/lib/libvtkRenderingQt-7.1.1.dylib"
यहाँ, libvtkRenderingQt-7.1.1.dylib
एक पुस्तकालय है जो एक सीएमके परियोजना से बनाया गया था, जिसे ऊपर से एक ही सीएमके झंडे के साथ बनाया गया था। कुछ कारणों से, libvtkRenderingQt
Qt फ्रेमवर्क से संसाधन नहीं मिल सके, जो उपरोक्त कमांड द्वारा तय किया गया था। छद्म वाक्य रचना में:
install_name_tool -change <old-path> <new-path> <file>
...कहा पे <old-path>
एक दिखाया गया है otool -L <file>
। ध्यान दें कि आप भी बदल सकते हैं rpath
साथ में install_name_tool
इसी तरह से (हेवन ने खुद को आजमाया नहीं):
install_name_tool -rpath <old-path> <new-path> <file>
और शायद एक आखिरी नोट: मैं उन उपकरणों को स्थापित करना पसंद करता हूं जो मैं खुद को स्थानीय निर्देशिका में बनाता हूं (उदा। /opt/dev
, या कुछ उपयोगकर्ता निर्देशिका) को अन्य चैनलों (जैसे macport, brew, आदि) से अधिगृहीत किए गए अन्य इंस्टॉलेशन को गड़बड़ाने के लिए नहीं। यह आपको सूडो ऑप्स की आवश्यकता से भी रोकता है, जैसा कि आपके उदाहरण में।