cmake
فاز پیکربندی پیشفرض را برای اجرای دستور CMake بازنویسی میکند.
بهطور پیشفرض، ما از تولیدکننده Make در CMake استفاده میکنیم.
اما زمانی که Ninja نیز به عنوان یک nativeBuildInput در دسترس باشد، این قلاب راهاندازی (setup hook) آن را تشخیص داده و از تولیدکننده ninja استفاده میکند.
وابستگیها بهطور خودکار به CMAKE_PREFIX_PATH اضافه میشوند تا بستهها بهدرستی توسط CMake تشخیص داده شوند.
برخی پرچمهای اضافی نیز ارسال میشوند تا رفتاری مشابه بستههای مبتنی بر configure ارائه دهند.
بهطور پیشفرض، ساخت موازی فعال است زیرا CMake تقریباً در همهجا از ساخت موازی پشتیبانی میکند.
میتوانید رفتار این قلاب را با مقداردهی configurePhase به یک مقدار سفارشی یا با تنظیم dontUseCmakeConfigure غیرفعال کنید.
متغیرهای کنترلکننده CMake
متغیرهای اختصاصی CMake
cmakeFlags
پرچمهای ارسالی به cmake setup را در طول فاز پیکربندی کنترل میکند.
cmakeBuildDir
پوشهای که CMake فایلهای میانجی را در آن قرار میدهد.
تنظیم این متغیر میتواند برای دیباگ (اشکالزدایی) ساختهای متعدد CMake در همان پوشه کد منبع مفید باشد، برای مثال هنگام ساخت برای پلتفرمهای مختلف. مقادیر متفاوت برای هر ساخت از تداخل فرآوردههای ساخت با یکدیگر جلوگیری میکند. این تنظیم هنگام اجرای ساخت در یک derivation ایزوله شده (Sandboxed) هیچ اثر ملموسی ندارد.
مقدار پیشفرض build است.
cmakeBuildType
نوع ساخت خروجی cmake.
بهصورت داخلی پرچم cmake مربوط به CMAKE_BUILD_TYPE را مقداردهی میکند.
مقدار پیشفرض Release است.
dontUseCmakeConfigure
هنگامی که روی true تنظیم شود، از cmakeConfigurePhase ازپیشتعریفشده استفاده نمیکند.
کنترل فراخوانی CTest
بهطور پیشفرض تستها توسط make در checkPhase یا توسط ninja (اگر ninja در nativeBuildInputs در دسترس باشد) اجرا میشوند. تولیدکنندههای Makefile و Ninja هدف test را تولید میکنند که در پشت صحنه ctest را فراخوانی میکند.
این امر ارسال آرگومانهای اضافی به ctest را دشوار میسازد، بنابراین میتوان با افزودن ctestCheckHook به nativeCheckInputs آن را مستقیماً در checkPhase فراخوانی کرد.
متغیرهای CTest
disabledTests
امکان غیرفعال کردن اجرای فهرستی از تستها را فراهم میکند. توجه داشته باشید که عبارتهای باقاعده (regular expressions) توسط disabledTests پشتیبانی نمیشوند، اما میتوان آن را با گزینه --exclude-regex ترکیب کرد.
ctestFlags
گزینههای اضافی که همراه با checkFlags به ctest ارسال میشوند.