سؤال

لقد حددت LIBRARY_SEARCH_PATHS ل /opt/local/lib, والتحقق من أن المكتبة المعنية موجودة (أنا أربط GLEW):

$ls /opt/local/lib

libGLEW.1.5.1.dylib libfreetype.a       libz.a
libGLEW.1.5.dylib   libfreetype.dylib   libz.dylib
libGLEW.a       libfreetype.la      pkgconfig
libGLEW.dylib       libz.1.2.3.dylib
libfreetype.6.dylib libz.1.dylib

لكن Xcode يعطيني خطأ الرابط

library not found for -lGLEW

أقوم بإنشاء مشروع Xcode مع Cmake، لذلك لا أريد تعديل مشروع XCode بشكل صريح (إذا كان شخص ما يقترح إضافةه كإطار، أو شيء من هذا القبيل). xcode يعترف USER_HEADER_SEARCH_PATHS غرامة (كما هو الحال هذا السؤال) لماذا لا يعمل هنا؟

هل كانت مفيدة؟

المحلول

ربما إضافة شيء من هذا القبيل إلى cmakelists.txt الخاص بك؟

find_library(GLEW_LIB GLEW /opt/local/lib)
if(NOT ${GLEW_LIB})
  message(FATAL_ERROR "Could not find GLEW")
endif()
target_link_libraries(myprogram ${GLEW_LIB} ...)

حيث MyProgram هو اسم الهدف القابل للتنفيذ الذي يحتاج إلى الارتباط مع المكتبة. سوف تحل محل ... مع المكتبات الأخرى التي تستخدمها في هذا القابل للتنفيذ.

هذه الطريقة سوف تتناول cmake تفاصيل مسار المكتبة لك.

نصائح أخرى

يعمل Xcode على SDK متعددة المحتمل، لذلك كلما حددت هذه الأنواع من الأشياء (مثل header_search_paths أو library_search_paths) تم إعادة تشغيل جذر SDK الحالي إلى المسار الفعلي الذي يتم تمريره إلى الرابط.

لذلك، طريقة واحدة لجعل هذا العمل ستكون لإضافة الدليل الخاص بك إلى SDK. على سبيل المثال، بافتراض أنك تقوم ببناءها باستخدام Mac OS X 10.5 SDK، يمكنك إضافة رقم التطوير الفعلي الخاص بك:

ln -s /opt /Developer/SDKs/MacOSX10.5.sdk/opt

سيتم الآن العثور على مكتبتك على نظامك.

إذا كنت لا ترغب في القيام بذلك، فسيتعين عليك النظر في cmake ومعرفة كيفية الحصول عليها لإنشاء متطلبات مكتبة لمكتبةك الفعلية (لا أعرف أي شيء عن cmake، لذلك لا أستطيع المساعدة أنت هناك). هذا هو أيضا السبب في أن ترى فرقا بين user_header_search_paths و header_search_paths سؤالك الآخر.

كخيار آخر، يمكنك أيضا تحديد هذا المسار مع متغير إنشاء Other_ldflags:

OTHER_LDFLAGS=-L/opt/local/lib

هذا سيؤدي إلى البحث / التقيد / التقيد / المحلي / LIB وكذلك مساراته القياسية ولن يطلب منك إنشاء ملف مشروع مختلف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top