هل من الممكن تثبيت Debug and Recize of a Library بنفس الأمر؟
-
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 ;