वर्तमान में qt, glew और assimp 3.0 सहित कुछ पुस्तकालयों के साथ मैं target_link_libraries का उपयोग करता हूं
cmake में मैं कॉल कर रहा हूँ (जो assimp-config कहते हैं) और फिर लौटा उपयोग करें ASSIMP_LIBRARIES
परिवर्तनीय और इसे target_link_libraries पर पास करें और सबकुछ ठीक है। मेरे अंदर एसिंप डाइलिब के पथ को छोड़कर .app पूर्ण है जब अन्य सभी पथ @ एक्सचेंज करने योग्य और इंगित होते हैं .app/Content/Frameworks/
फ़ोल्डर इसलिए मैं अपना ऐप वितरित कर सकता हूं।
अब तक मैं नहीं देख सकता कि मुझे अंतर कहाँ है (उदाहरण के लिए) और assimp के बीच की जरूरत है, लेकिन जब मैं निर्भरताओं की जांच करता हूं otool -L
मैं देख सकता हूं कि जो भी मैं गधे का काम करता हूं वह पूर्ण पथ से जुड़ा हुआ है और मेरा आवेदन अंदर इस डाइलिब को नहीं ढूंढ सकता है Frameworks
यह सुनिश्चित करने के लिए कि उस लाइब्रेरी के साथ मेरे एप्लिकेशन का लिंक जोड़ने से ऐप बंडल में सापेक्ष होगा?
उत्तर:
जवाब के लिए 3 № 1का उपयोग POST_BUILD
कस्टम कमांड को निर्भर साझा लाइब्रेरी इंस्टॉल नाम को ठीक करने के लिए install_name_tool
कमांड लाइन उपकरण, उदा .:
add_custom_command (TARGET myAppExecutable
POST_BUILD COMMAND "${CMAKE_INSTALL_NAME_TOOL}"
"-change" "/usr/local/lib/libassimp.dylib" "@executable_path/../Frameworks/libassimp.dylib"
"$<TARGET_FILE:myAppExecutable>" VERBATIM)