سؤال

أنا Boost.build newby وعلى الرغم من أن bjam سهل الاستخدام تمامًا لمعظم مهام التجميع ولم أكتشف كيفية القيام بشيء يجب أن يكون بسيطًا حقًا:تثبيت التطبيق الخاص بي في النظام.

لنفترض أن لدي مشروعًا بسيطًا للغاية يحتوي على ملفين في الشجرة (إلى جانب Jamroot).

  • مرحبا.cpp :يقول برنامج C++ أنه يطبع محتوى /etc/hello.conf

  • مرحبا.مؤتمر :hello.conf الافتراضي

ما أريد القيام به هو:

  • تكون قادرًا على تجميع وربط hello.cpp دون تثبيت أي شيء على مستوى النظام
  • عند الاتصال بهدف التثبيت (وعندها فقط):
    • انسخ الملف القابل للتنفيذ مرحبًا إلى /usr/bin
    • انسخ hello.conf إلى /etc.

أدناه هو bjam الذي بدأت في كتابته:

exe hello : hello.cpp ;
alias install : install-bin  install-etc ;
install install-bin : hello : <location>/usr/bin ;
install install-etc : hello.conf : <location>/etc ;

مشكلتي هي أنني كمستخدم لا أستطيع الكتابة إلى /etc ولا /usr/bin وأريد أن يتم ذلك فقط عند استدعاء هدف التثبيت بشكل صريح، وليس في كل مرة أكتب فيها bjam.

من المهم جدًا بالنسبة لي أن أفصل بين مراحل التثبيت والبناء حيث يجب أن تتم مرحلة البناء باستخدام حقوق المستخدم ومرحلة التثبيت باستخدام حقوق المسؤول.

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

المحلول

يبدو أن ما كتبته جيد، باستثناء مسألتين.أولا يجب أن يكون السطر الأخير كما يلي:

install install-etc : hello.conf : <location>/etc ;
explicit install install-bin install-etc ;

ثانيا، install يجب أن يشير الاسم المستعار إلى كليهما install-bin و install-etc.عند إجراء هذه التغييرات، هل تعمل الأشياء؟

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