سؤال

عند بناء المكتبات الثنائية مع bjam, ، يمكن للمرء أن يحدد المترجم الذي يجب استخدامه ، بدون تحديد إصدار برنامج التحويل البرمجي معين ، باستخدام قيم معينة ل --toolset= اختيار. فمثلا:

bjam --with-serialization --toolset=msvc

ال قيمة مجموعة الأدوات msvc يروي bjam للبحث عن نظامك عن بعض إصدار من Microsoft Visual C ++ ثم استخدمه لإنشاء عدد من المتغيرات من مكتبة Boost.Serialization. ستحتوي المكتبات الناتجة على علامة تشير إلى مجموعة الأدوات التي تم استخدامها بالفعل. على سبيل المثال ، يقوم الأمر أعلاه بإنشاء ملفات مثل:

libboost_serialization-vc100-mt-s-1_44.lib
libboost_serialization-vc100-mt-sgd-1_44.lib
...

حيث السلسلة vc100 في اسم الملف أ علامة أدوات مما يشير إلى أن Microsoft Visual C ++ 2010 تم العثور على إصدار المترجم واستخدامه لبناء المكتبات. [يمكن العثور على مزيد من التفاصيل حول اتفاقيات تسمية مكتبة Boost هنا.]

يمكن للمرء أن يحدد أيضًا أ محدد نسخة من برنامج التحويل البرمجي باستخدام بعض القيم الأخرى ل --toolset= اختيار. فمثلا:

bjam --with-serialization --toolset=msvc-9.0

يروي bjam على الرغم من أنه قد يكون لدي العديد من المجمعين على نظامي ، إلا أنني أريده استخدامه على وجه التحديد Microsoft Visual C ++ 2008. تحتوي المكتبات الناتجة على سلسلة العلامات vc90 للإشارة إلى ذلك Microsoft Visual C ++ 2008 كان يستخدم لبناءها.

يبدو أن وثائق Boost كانت بعيدة بعض الشيء فيما يتعلق بمجموعات جديدة على MAC (على سبيل المثال ، كيف يمكن للمرء أن يميز بين GCC و LLVM-GCC و LLVM؟)

سؤالي هو ، ما هي بعض الأخرى bjam --toolset= القيم والعلامات المقابلة لها إصدارات البرمجة المحددة في Xcode 3 و Xcode 4 على Mac (ليس قيم اسم المترجم العام مثل darwin))؟ هل هذه موثقة في أي مكان؟ حتى إذا لم يتم دعم المكتبات الداعمة التي تحتوي على بعض الإصدارات toolset وتم تحديد قيم العلامات حتى الآن؟

الرجاء المساعدة في استبدال ???S في هذا الجدول:

TOOL AND VERSION               --toolset=     TAG
======================================================
Microsoft Visual C++ 2008      msvc-9.0       vc90
Microsoft Visual C++ 2010      msvc-10.0      vc100
Apple (1) GCC 4.0 (2)            ???          xgcc40
Apple GCC 4.2                    ???          xgcc42
Apple LLVM GCC 4.2               ???           ???
Apple LLVM compiler 1.5 (2)      ???           ???
Apple LLVM compiler 2.0 (3)      ???           ???

(1) تنتج Apple إصداراتها الخاصة من مجمعات GCC و LLVM لإضافة ملحقات وسلوك خاص بـ Apple.

(2) متوفر في Xcode 3 فقط.

(3) متوفر في Xcode 4 فقط.

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

المحلول

هناك رسم خرائط مباشر من مجموعة الأدوات المحددة إلى الجزء الأساسي من العلامة. وبالتالي لأي مترجم Apple Xcode الذي تحدده يستخدم darwin.jam مجموعة الأدوات ستكون بداية العلامة دائمًا xgcc (لـ Xcode GCC). الجزء الثاني ، أي رقم إصدار المترجم ، يتم اكتشافه تلقائيًا من المترجم نفسه. ال darwin.jam يستخدم رمز مجموعة الأدوات -dumnpversion خيار اكتشاف ماهية هذا الإصدار (انظر داروين الخط رقم 123). لذا بعض الأشياء:

  1. بالنسبة إلى Xcode ، سيكون دائمًا toolset=darwin للافتراضيات g++.
  2. للحصول على إصدارات أخرى غير مقدمة ، يجب عليك إعداد ملف site-config.jam أو user-config.jam لمعرفة Boost Build أين وأيها المجمعون لديك (انظر تكوين BB مستندات).
  3. ال toolset=darwin-<some_version> يطابق ما تحدده في التكوين الخاص بك.
  4. ال darwin.jam تدعم مجموعة الأدوات الاختيار الذكي للمترجم بناءً على ما تحاول إنشاءه لتسهيل الأمر.

على سبيل المثال ، أستخدم شيئًا مثل ما يلي لتطوير iOS:

using darwin : : /Xcode-path/usr/bin/g++-4.0 ;
using darwin : : /Xcode-path/usr/bin/g++-4.2 ;
using darwin : 4.2~iphone
:   /Xcode-path/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv6
:   <striper>
:   <architecture>arm <target-os>iphone
;
using darwin : 4.2~iphonesim
:   /Xcode-path/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2
:   <striper>
:   <architecture>x86 <target-os>iphone
;

الذي يمكنني:

  1. bjam toolset=darwin-4.0 - لبناء OSX العادي مع GCC 4.0. مما يؤدي إلى العلامة xgcc-42.
  2. bjam toolset=darwin-4.2 - بالمثل لـ OSX و GCC 4.2. التي سأحصل عليها xgcc-42.
  3. bjam toolset-darwin architecture=arm target-os=iphone - للقيام ببناء جهاز iPhone باستخدام GCC 4.2. ينتهي العلامة أيضًا xgcc42 وهو تصادم. ولكن هناك حد لمقدارنا في تلك العلامات. وعادة ما لا تكون مشكلة لأن أحدهما يعزل نتائج بنيت عبر المنصات على أي حال.

يمكنك إعداده باستخدام أحد مجمعي LLVM عن طريق الإضافة إلى التكوين الخاص بك:

using darwin : 4.2~llvm~gcc : /Xcode-path/user/bin/llvm-g++ ;

والاستدعاء مع bjam toolset=darwin-4.2~llvm~gcc. لسوء الحظ ، ستكون العلامة أيضًا xgcc-4.2 (كما مرة أخرى ، يعتمد على استخدام darwin.jam). لذلك ستحتاج إلى فصل LIBs الناتجة عن تصميمات GCC الأخرى.

من المؤسف أيضًا أنه لا يوجد موقع موثق لتخطيط مجموعة الأدوات المستخدمة في قيمة العلامة بخلاف الكود (انظر BB المشترك الخطوط #801 إلى #841).

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