سؤال

لقد كنت أستخدم 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top