CFLAGS و CXXFLAGS، هم می‌توانند نام متغیرهای محیطی باشند و هم نام متغیرهایی در یک میک‌فایل. در هنگام کامپایل کردن نرم‌افزارها، از این متغیرها، برای ارسال کردن گزینه‌های خط فرمانی اضافه به کامپایلر زبان سی یا سی++ استفاده می‌شود. این متغیرها معمولاً در یک میک‌فایل تعریف می‌شوند و وقتی که قرار است کامپایلر برنامه‌ای را کامپایل کند، آین متغیرها خوانده شده و مقدار آنها به عنوان آرگومان، به انتهای آرگومان‌های فعلی کامپایلر اضافه می‌شود. اگر آنها در میک‌فایل تعریف نشده باشند، سیستم سعی می‌کند آنها را از متغیرهای محیطی بخواند. اگر آنجا هم تعریف نشده باشند، سیستم هیچ آرگومان اضافه‌ای را به کامپایلر سی یا سی++ ارسال نخواهد کرد و کامپایلر تنها با آرگومان‌های پیشفرض اجرا می‌شود. ابزارهایی مانند اسکریپت ‎. /configure در برنامه autoconf، که برای تولید خودکار میک‌فایل‌ها استفاده می‌شوند، معمولاً این متغیرها را از روی متغیرهای محیطی سیستم می‌خوانند و سپس آنها را در میک‌فایلی که قرار است تولید شود، قرار می‌دهند. برخی از اسکریپت‌های نصبِ بسته، مانند SDL، به جای اینکه مقدار این متغیرها را به انتهای آرگومانهای فعلی اضافه کنند، آرگومان‌های فعلی را پاک و بی‌اثر کرده و سپس مقدار CFLAGS یا CXXFLAGS را به عنوان آرگومان‌های معمول خود استفاده می‌کنند. در چنین مواقعی، استفاده اشتباه از CFLAGS یا CXXFLAGS می‌تواند به سیستم آسیب برساند.

CFLAGS برای ارسال آرگومان اضافه به کامپایلر سی استفاده می‌شود، CXXFLAGS هم برای ارسال آرگومان‌های اضافه به کامپایلر سی++ استفاده می‌شود. متغیر دیگری به نام CPPFLAGS هم وجود دارد که هم برای ارسال آرگومان به کامپایلر سی، و هم برای ارسال آرگومان به کامپایلر سی++ استفاده می‌شود.

از این متغیرها بیشتر برای بهینه‌سازی و خطایابی استفاده می‌شود. مثلاً اگر مقدار CFLAGS به صورت زیر باشد:

CFLAGS=    -O2 -pipe -march=core2

علاوه بر گزینه‌های فعلی کامپایلر، مقادیر ‎- O2 -pipe -march=core2 هم به انتهای آنها اضافه می‌شود. یا مثلاً برای خطایابی می‌توان مقدار این متغیر را به شکل زیر تعریف کرد:

CFLAGS=    -g

که سمبول‌های خطایابی را به برنامه اضافه می‌کند تا بعداً بتوان آن را به کمک جی‌دی‌بی یا هر اشکال‌زدای دلخواهی به خطایابی برنامه پرداخت.

پیوند به بیرون

منابع