هل من الممكن تثبيت Debug and Recize of a Library بنفس الأمر؟

StackOverflow https://stackoverflow.com/questions/3636677

  •  30-09-2019
  •  | 
  •  

سؤال

أنا أستخدم Jamfile التالي (في الدليل/الصفحة الرئيسية/morpheus/base/cdef):


lib CDEF: [glob *.cpp]: static ؛

تثبيت libcdef: CDEF: lib "/home/morpheus/base_install/lib": release ؛

تثبيت _libcdef_d: cdef: lib "/home/morpheus/base_install/libdebug": debug ؛


كنت أتساءل عما إذا كان يمكن تغيير خطين التثبيت إلى خط يضم كل من توجيهات التصحيح والإصدار.

أيضا لاستخدام المكتبات في مربى مختلف في دليل مختلف (/home/morpheus/fslr) أنا أستخدم jamfile التالية لبناء exe callfslr:


Lib CDEF :: إطلاق CDEF/Home/Morpheus/base_install/lib ؛ LIB CDEF :: Debug CDEF/Home/Morpheus/base_install/libdebug ؛

exe callfslr: call_fslr.cpp cdef :: debug release ؛

تثبيت BIN: CALLFSLR: "/Home/Morpheus/base_install/bin".


أعتقد أن استخدام "الاستخدام الحجم" للإشارة إلى CDEF في jamfile/home/morpheus/base/cdef/jamfile ربما يكون من المستحسن؟

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

المحلول

(أعتقد أن بعض الأشياء مفقودة من قواعد المربى ، ربما بسبب التنسيق.)

نعم ، يمكنك بالتأكيد تحديد كل من أهداف التصحيح والإنتاج بنفس القاعدة ، باستخدام المتطلبات الشرطية. مثال حتى وثائق install قاعدة.

أعتقد أن قواعدك الأصلية تبدو مثل

install libCDef
  : CDef
  : <install-type>LIB
    <location>"/home/morpheus/base_install/lib"
  : <variant>release ;

install _libCDef_D
  : CDef
  : <install-type>LIB
    <location>"/home/morpheus/base_install/libdebug"
  : <variant>debug ;

سترغب في جعل ملف location ميزة الاعتماد على البديل ، مثل ذلك:

install libCDef
  : CDef
  : <install-type>LIB
    <variant>release:<location>"/home/morpheus/base_install/lib"
    <variant>debug:<location>"/home/morpheus/base_install/libdebug"
  ;

أما بالنسبة للسؤال الثاني ، نعم ، use-project من شأنه أن يساعد ، على الرغم من أنه لا ينبغي أن يكون ضروريًا. تريد أن تفعل هذا

exe callFSLR : call_FSLR.cpp ../base/CDef//CDef ;

../base/CDef//CDef يشير إلى الهدف المسمى CDef محدد في المشروع (الدليل) ../base/CDef. يشير هذا إلى قاعدة المكتبة ، لذلك سوف يستخدم Boost Build إصدار المكتبة في دليل BIN ، وليس الإصدار الذي تم إنشاؤه بواسطة قاعدة التثبيت. (قد يكون هذا مهمًا إذا كان لديك مشكلات في المكتبة الديناميكية.) أيضًا ، لا تحتاج إلى lib CDef مباشرة فوق هذه القاعدة.

لتجنب خرقاء ../base/CDef, ، يمكنك استخدام use-project قاعدة لإجراء تعريف جديد للمشروع. ثم إذا قمت بإعادة تنظيم هيكل الدليل ، فلديك مكان واحد فقط لتغييره.

use-project /CDef-project : ../base/CDef ;

exe callFSLR : call_FSLR.cpp /CDef-project//CDef ;

احتمال آخر ، إذا كنت ستستخدم الهدف الوحيد في هذا المربى ، وهو استخدام قاعدة الاسم المستعار.

alias CDef : ../base/CDef//CDef ;

exe callFSLR : call_FSLR.cpp CDef ;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top