اینم یه تجربه پراکنده دیگه!
خب توی این پست یه ابزار جایگزین برای build کردن نرمافزارهای c و c++ معرفی کنم به اسم ninja. داستان بوجود اومدنش از این قراره که آقای اوان مارتین که توی گوگل روی توسعه google chrome کار میکرده متوجه میشه روند کامپایل کدهاشون بیش از حد کنده و دست و آستینش رو بالا زدن که یه سیستم سریعتر برای build بنویسه که حاصل شد ninja. پیشنهاد میکنم در اولین گام سیستمتون رو اگه cmake نیست cmake کنید و در گام دوم از ninja استفاده کنید
ویژگیهای ninja
خب ویژگیهایی که من بلدم از این قراره
- سعی در انجام یک کار بصورت درست
- سعی در خیلی سریع بودن
- حداقل محدودیت روی نحوه کامپیال شدن کد و سپردن اونها به ابزارهای سطح بالاتر مانند cmake و gyp
- تشخیص درست وابستگیها
- سرعت بر سادگی ارجحیت دارد
خب همونطور که قبلا هم گفته بودم نحوه کامپایل کدها منتقل شده بود به cmake و تنها کاری که لازم بود من انجام بدم دستورات زیر بود
$ mkdir build
$ cd build
$ cmake -GNinja ../
$ ninja
برای کدهای ما در یک تست غیر علمی نتیجههای حدودی زیر برای ۲ یا ۳ بار اجرا بدست اومد
type | make | ninja |
---|---|---|
clean build | 60s | 13s |
rebuild | 10s | 0.3s |
همین!