كيف تفعل بناء خارج المصدر مع كبار السن؟
-
21-09-2019 - |
سؤال
لقد كنت أستخدم Cmake لإنشاء مشاريع الخاصة بي خارج المصدر ، وهو أمر مناسب حقًا حيث تتجنب تلويث دليل المصدر الخاص بك بملفات غير ضرورية.
على افتراض أن cmakelists.txt موجود في الدليل الحالي ، يمكن القيام بذلك على النحو التالي:
mkdir build
cd build
cmake ..
make
كيف يمكنني فعل الشيء نفسه في الرهن؟
المحلول
في الخاص بك SConstruct
ملف ، يمكنك استخدام DIR البديل:
SConscript("main.scons", variant_dir="build", duplicate=0)
ثم في main.scons
قمت بإعداد كل شيء كالمعتاد:
env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))
من الممكن القيام بذلك دون ترميز المتغيرات المتغيرة إلى sconstruct بواسطة (AB) باستخدام المستودعات ، ولكن هذا النهج له أخطاء. بالنسبة للسجل ، ستقوم بتشغيل ما سبق على النحو التالي للبناء في دليل آخر:
mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons
الأسهل والأكثر عمليًا هو الاستخدام فقط variant_dir
. ثم تقوم بتشغيل هذا كالمعتاد من دليل مصدر المستوى الأعلى. يتم إنتاج جميع القطع الأثرية في البناء في build
الدليل الفرعي.
للإستجابة ل jespereتعليق ، إليكم كيف يمكنك كتابة المستوى الأعلى لإضافة دليل بناء مسمى اختياريًا:
AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)
بعد ذلك ، يمكنك الاتصال بهذا من سطر الأوامر على النحو التالي ، لإنشاء دليل بناء يسمى "BAZ":
$ scons --build=baz