Scons: دليل المصدر لا يتم نسخه في دليل البناء

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

  •  26-09-2019
  •  | 
  •  

سؤال

جزء من عملية الإنشاء الخاصة بي هو إنشاء ملف TAR لدليل الإدخال ، الموجود في src/bundle/bundle. في SRC/Bundle/Sconscript:

Import('*')

bundleDir = Dir("bundle")
jsontar = Command("bundle.tar", bundleDir,
                  "/home/dbender/bin/mkvgconf $SOURCE $TARGET")

في بلدي sconstruct:

SConscript(Split('src/bundle/SConscript'),
  exports='bin_env lib_env', build_dir='tmp/bundle')

عند محاولة البناء:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
/home/dbender/bin/mkvgconf tmp/bundle/bundle tmp/bundle/bundle.tar
Input directory tmp/bundle/bundle not found!
scons: *** [tmp/bundle/bundle.tar] Error 1
scons: building terminated because of errors.

من الواضح أن SCONS لا تقوم بنسخ SRC/BUNDLE/BUNDLE إلى TMP/BUNDLE/BUNDLE ، لكنني أشعر بالذهول عن السبب.

الحواشي: استخدام المسار المطلق لـ MKVGConf هو ممارسة سيئة ولكن فقط متوسطة حتى أواجه حل هذه المشكلة.

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

المحلول

لا تعرف Scons أي شيء عن محتويات مدخلاتك src/bundle/bundle - فقط البرنامج mkvgconf يعرف ماذا يفعل مع هذا الدليل.

أحد الحلول هو إضافة تبعية صريحة في Sconscript:

import os
Depends('bundle.tar', Glob(str(bundleDir) + os.path.sep + '*'))

هذا يعني أيضًا أنه عند تحديث محتويات دليل الحزمة ، سيتم إعادة تشغيل البرنامج النصي MKVGCONF.

ملاحظة. قد ترغب في تغيير build_dir اسم الحجة إلى variant_dir, ، كما تم إهمال الأول لصالح الأخير في إصدارات Scons الأخيرة.

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