CMAKE(1) دستورات عمومی کاربر CMAKE(1)

cmake - مرجع خط فرمان CMake

تولید یک سیستم ساخت پروژه
 cmake [<options>] -B <path-to-build> [-S <path-to-source>]
 cmake [<options>] <path-to-source | path-to-existing-build>
ساخت یک پروژه
 cmake --build <dir> [<options>] [-- <build-tool-options>]
نصب یک پروژه
 cmake --install <dir> [<options>]
باز کردن یک پروژه
 cmake --open <dir>
اجرای یک اسکریپت
 cmake [-D <var>=<value>]... -P <cmake-script-file>
اجرای یک ابزار خط فرمان
 cmake -E <command> [<options>]
اجرای ابزار Find-Package
 cmake --find-package [<options>]
اجرای یک پیش‌تنظیم گردش کار
 cmake --workflow <options>
مشاهده راهنما
 cmake --help[-<topic>]

فایل اجرایی cmake رابط خط فرمان ابزار چندسکویی تولید سیستم ساخت CMake است. بخش خلاصه دستور در بالا، عملیات مختلفی را که این ابزار می‌تواند انجام دهد، همان‌طور که در بخش‌های زیر شرح داده شده است، فهرست می‌کند.

برای ساخت یک پروژه نرم‌افزاری با CMake، ابتدا «تولید یک سیستم ساخت پروژه» را انجام دهید. در صورت تمایل می‌توانید از cmake برای ساخت یک پروژه، نصب یک پروژه یا صرفاً اجرای مستقیم ابزار ساخت متناظر (مانند make) استفاده کنید. همچنین cmake می‌تواند برای مشاهده راهنما به کار رود.

سایر عملیات برای استفاده توسعه‌دهندگان نرم‌افزاری در نظر گرفته شده است که برای پشتیبانی از فرآیند ساخت خود، اسکریپت‌هایی به CMake language <#manual:cmake-language(7)> می‌نویسند.

برای رابط‌های گرافیکی کاربر که می‌توانند به جای cmake استفاده شوند، به ccmake <#manual:ccmake(1)> و cmake-gui <#manual:cmake-gui(1)> مراجعه کنید. برای رابط‌های خط فرمان مربوط به امکانات آزمایش و بسته‌بندی CMake، به ctest <#manual:ctest(1)> و cpack <#manual:cpack(1)> مراجعه فرمایید.

برای اطلاعات بیشتر درباره کلیت CMake، همچنین پیوندهای انتهای این راهنما را ببینید.

یک سیستم ساخت (buildsystem) نحوه ساخت فایل‌های اجرایی و کتابخانه‌های یک پروژه را از کد منبع آن با استفاده از یک ابزار ساخت (build tool) برای خودکارسازی فرآیند توصیف می‌کند. به عنوان مثال، یک سیستم ساخت ممکن است یک Makefile برای استفاده با ابزار خط فرمان make یا یک فایل پروژه برای یک محیط توسعه یکپارچه (IDE) باشد. به منظور جلوگیری از نگهداری چندین سیستم ساخت از این دست، یک پروژه می‌تواند سیستم ساخت خود را به صورت انتزاعی با استفاده از فایل‌های نوشته‌شده به CMake language <#manual:cmake-language(7)> مشخص کند. از این فایل‌ها، CMake از طریق یک بخش پسین به نام تولیدکننده (generator)، یک سیستم ساخت ترجیحی را به صورت محلی برای هر کاربر تولید می‌کند.

برای تولید یک سیستم ساخت با CMake، موارد زیر باید انتخاب شوند:

درخت منبع (Source Tree)
دایرکتوری سطح بالایی که حاوی فایل‌های منبع ارائه‌شده توسط پروژه است. پروژه سیستم ساخت خود را با استفاده از فایل‌هایی همان‌طور که در راهنمای cmake-language(7) <#manual:cmake-language(7)> شرح داده شده است، با شروع از یک فایل سطح بالا به نام CMakeLists.txt مشخص می‌کند. این فایل‌ها هدف‌های ساخت و وابستگی‌های آن‌ها را همان‌طور که در راهنمای cmake-buildsystem(7) <#manual:cmake-buildsystem(7)> توصیف شده است، تعیین می‌کنند.
درخت ساخت (Build Tree)
دایرکتوری سطح بالایی که فایل‌های سیستم ساخت و مصنوعات خروجی ساخت (مانند فایل‌های اجرایی و کتابخانه‌ها) باید در آن ذخیره شوند. ابزار CMake یک فایل CMakeCache.txt ایجاد می‌کند تا این دایرکتوری را به عنوان یک درخت ساخت شناسایی کرده و اطلاعات ماندگار مانند گزینه‌های پیکربندی سیستم ساخت را ذخیره کند.

برای حفظ دست‌نخورده ماندن درخت منبع، با استفاده از یک درخت ساخت اختصاصی و مجزا، یک ساخت خارج از منبع (out-of-source) انجام دهید. ساخت درون منبع (in-source) که در آن درخت ساخت در همان دایرکتوری درخت منبع قرار می‌گیرد نیز پشتیبانی می‌شود، اما توصیه نمی‌شود.

تولیدکننده (Generator)
این گزینه نوع سیستم ساختی را که باید تولید شود انتخاب می‌کند. برای مستندات مربوط به همه تولیدکننده‌ها، به راهنمای cmake-generators(7) <#manual:cmake-generators(7)> مراجعه کنید. برای مشاهده فهرستی از تولیدکننده‌های موجود به صورت محلی، دستور cmake --help را اجرا کنید. در صورت تمایل، از گزینه -G در زیر برای مشخص کردن یک تولیدکننده استفاده نمایید، یا صرفاً پیش‌فرضی را که CMake برای پلتفرم فعلی انتخاب می‌کند بپذیرید.

هنگام استفاده از یکی از تولیدکننده‌های ابزار ساخت خط فرمان (Command-Line Build Tool Generators <#command-line-build-tool-generators>)، ابزار CMake انتظار دارد که محیط مورد نیاز زنجیره ابزار کامپایلر از قبل در پوسته پیکربندی شده باشد. هنگام استفاده از یکی از تولیدکننده‌های ابزار ساخت محیط توسعه یکپارچه (IDE Build Tool Generators <#ide-build-tool-generators>)، به محیط خاصی نیاز نیست.

دستور CMake را با یکی از امضاهای دستوری زیر برای تعیین درخت‌های منبع و ساخت و تولید یک سیستم ساخت اجرا کنید:

cmake [<options>] -B <path-to-build> [-S <path-to-source>]

اضافه‌شده در نسخه 3.13.

از <path-to-build> به عنوان درخت ساخت و از <path-to-source> به عنوان درخت منبع استفاده می‌کند. مسیرهای مشخص‌شده می‌توانند مطلق یا نسبی نسبت به دایرکتوری کاری فعلی باشند. درخت منبع باید حاوی یک فایل CMakeLists.txt باشد. اگر درخت ساخت از قبل وجود نداشته باشد، به صورت خودکار ایجاد خواهد شد. برای مثال:

$ cmake -S src -B build
از دایرکتوری کاری فعلی به عنوان درخت ساخت و از <path-to-source> به عنوان درخت منبع استفاده می‌کند. مسیر مشخص‌شده می‌تواند مطلق یا نسبی نسبت به دایرکتوری کاری فعلی باشد. درخت منبع باید حاوی یک فایل CMakeLists.txt باشد و «نباید» حاوی فایل CMakeCache.txt باشد، زیرا دومی نشان‌دهنده یک درخت ساخت از قبل موجود است. برای مثال:
$ mkdir build ; cd build
$ cmake ../src
از <path-to-existing-build> به عنوان درخت ساخت استفاده می‌کند و مسیر درخت منبع را از فایل CMakeCache.txt آن بارگذاری می‌نماید که باید از قبل در یک اجرای قبلی CMake ایجاد شده باشد. مسیر مشخص‌شده می‌تواند مطلق یا نسبی نسبت به دایرکتوری کاری فعلی باشد. برای مثال:
$ cd build
$ cmake .

در تمام حالات، <options> می‌تواند صفر یا چند مورد از گزینه‌های زیر باشد.

شیوه‌های فوق برای تعیین درخت‌های منبع و ساخت را می‌توان با یکدیگر ترکیب کرد. مسیرهای مشخص‌شده با -S یا -B همواره به ترتیب به عنوان درخت‌های منبع یا ساخت دسته‌بندی می‌شوند. مسیرهایی که با آرگومان‌های ساده مشخص می‌شوند بر اساس محتوای آن‌ها و نوع مسیرهایی که پیش‌تر ارائه شده‌اند دسته‌بندی می‌گردند. اگر تنها یک نوع مسیر داده شود، دایرکتوری کاری فعلی (cwd) برای دیگری استفاده می‌شود. برای مثال:

خط فرمان دایرکتوری منبع دایرکتوری ساخت
cmake -B build cwd build
cmake -B build src src build
cmake -B build -S src src build
cmake src src cwd
cmake build (موجود) loaded build
cmake -S src src cwd
cmake -S src build src build
cmake -S src -B build src build

تغییریافته در نسخه 3.23: ابزار CMake هنگامی که چندین مسیر منبع مشخص شوند، هشدار می‌دهد. این رفتار هرگز به طور رسمی مستندسازی یا پشتیبانی نشده است، اما نسخه‌های قدیمی‌تر به طور تصادفی چندین مسیر منبع را می‌پذیرفتند و از آخرین مسیر مشخص‌شده استفاده می‌کردند. از ارسال چندین آرگومان مسیر منبع خودداری کنید.

پس از تولید یک سیستم ساخت، کاربر می‌تواند از ابزار ساخت بومی متناظر برای ساخت پروژه استفاده کند. به عنوان مثال، پس از استفاده از تولیدکننده Unix Makefiles <#generator:Unix Makefiles> می‌توان make را مستقیماً اجرا نمود:

$ make
$ make install

به عنوان روش جایگزین، می‌توان از cmake برای «ساخت یک پروژه» با انتخاب و فراخوانی خودکار ابزار ساخت بومی مناسب استفاده کرد.

مسیر دایرکتوری ریشه پروژه CMake برای ساخت.
مسیر دایرکتوری‌ای که CMake به عنوان ریشه دایرکتوری ساخت استفاده خواهد کرد.

اگر دایرکتوری از قبل وجود نداشته باشد، CMake آن را ایجاد خواهد کرد.

پیش‌بارگذاری یک اسکریپت برای مقداردهی حافظه پنهان (کش).

هنگامی که CMake برای نخستین بار در یک درخت ساخت خالی اجرا می‌شود، یک فایل CMakeCache.txt ایجاد کرده و آن را با تنظیمات قابل‌سفارشی‌سازی برای پروژه پر می‌کند. از این گزینه می‌توان برای تعیین فایلی استفاده کرد که ورودی‌های کش پیش از نخستین پیمایش فایل‌های CMake پروژه (listfiles)، از آن بارگذاری شوند. ورودی‌های بارگذاری‌شده بر مقادیر پیش‌فرض پروژه اولویت دارند. فایل ارائه‌شده باید یک اسکریپت CMake شامل دستورهای set() <#command:set> باشد که از گزینه CACHE استفاده می‌کنند، نه یک فایل با قالب کش (cache-format).

ارجاعات به CMAKE_SOURCE_DIR <#variable:CMAKE_SOURCE_DIR> و CMAKE_BINARY_DIR <#variable:CMAKE_BINARY_DIR> در داخل اسکریپت به درخت منبع و ساخت در بالاترین سطح (top-level) ارزیابی می‌شوند.

ایجاد یا به‌روزرسانی یک ورودی CACHE در CMake.

هنگامی که CMake برای نخستین بار در یک درخت ساخت خالی اجرا می‌شود، یک فایل CMakeCache.txt ایجاد کرده و آن را با تنظیمات قابل‌سفارشی‌سازی برای پروژه مقداردهی می‌کند. از این گزینه می‌توان برای تعیین تنظیمی استفاده کرد که نسبت به مقدار پیش‌فرض پروژه اولویت دارد. این گزینه را می‌توان برای هر تعداد ورودی CACHE دلخواه تکرار کرد.

اگر بخش :<type> مشخص شود، باید یکی از انواعی باشد که در مستندات دستور set() <#command:set> برای امضای CACHE آن قید شده است. اگر بخش :<type> حذف شود، در صورتی که ورودی از قبل با نوع مشخصی وجود نداشته باشد، بدون نوع ایجاد خواهد شد. اگر دستوری در پروژه نوع آن را به PATH یا FILEPATH تنظیم کند، مقدار <value> به یک مسیر مطلق تبدیل خواهد شد.

این گزینه همچنین می‌تواند به عنوان یک آرگومان واحد ارائه شود: -D<var>:<type>=<value> یا -D<var>=<value>.

ویژگی HELPSTRING <#prop_cache:HELPSTRING> حافظه پنهان به صورت زیر مقداردهی می‌شود:

  • اگر ورودی حافظه پنهان برای CMake شناخته‌شده باشد، رشته راهنمای آن روی یک توضیح تک‌خطی از متغیر تنظیم می‌شود.

    افزوده‌شده در نسخه 4.4.

  • در غیر این صورت، رشته راهنمای آن روی مقدار پیش‌فرض عمومی زیر تنظیم می‌شود: No help, variable specified on the command line.

توجه به این نکته مهم است که ترتیب آرگومان‌های -C و -D دارای اهمیت است. آن‌ها به ترتیب درج‌شدن اعمال خواهند شد و آخرین آرگومان نسبت به موارد قبلی اولویت دارد. برای نمونه، اگر -DCMAKE_BUILD_TYPE=Debug را مشخص کنید و به دنبال آن یک آرگومان -C با فایلی بیاید که دستور زیر را فراخوانی می‌کند:

set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)

آنگاه آرگومان -C اولویت داشته و CMAKE_BUILD_TYPE روی Release تنظیم خواهد شد. اما اگر آرگومان -D بعد از آرگومان -C بیاید، روی Debug تنظیم خواهد شد.

اگر یک فراخوانی set(... CACHE ...) در فایل -C از FORCE استفاده نکند و یک آرگومان -D همان متغیر را تنظیم نماید، آرگومان -D به دلیل ماهیت فراخوانی‌های بدون FORCE دستور set(... CACHE ...) بدون در نظر گرفتن ترتیب، اولویت خواهد داشت.

حذف ورودی‌های منطبق از CACHE در CMake.

از این گزینه می‌توان برای حذف یک یا چند متغیر از فایل CMakeCache.txt استفاده کرد؛ عبارت‌های انطباق الگو (globbing) با استفاده از * و ? پشتیبانی می‌شوند. این گزینه را می‌توان برای هر تعداد ورودی CACHE دلخواه تکرار نمود.

با احتیاط استفاده کنید؛ ممکن است فایل CMakeCache.txt شما را از کار بیندازد.

تعیین یک تولیدکننده سیستم ساخت (generator).

سامانه CMake ممکن است در پلتفرم‌های خاص از چندین سیستم ساخت بومی پشتیبانی کند. یک تولیدکننده مسئول تولید یک سیستم ساخت مشخص است. نام‌های مجاز تولیدکننده در راهنمای cmake-generators(7) <#manual:cmake-generators(7)> قید شده‌اند.

در صورت عدم تعیین، CMake متغیر محیطی CMAKE_GENERATOR <#envvar:CMAKE_GENERATOR> را بررسی می‌کند و در غیر این صورت به انتخاب پیش‌فرض داخلی بازمی‌گردد.

مشخصات جعبه‌ابزار/مجموعه ابزار (toolset) برای تولیدکننده، در صورت پشتیبانی.

برخی تولیدکننده‌های CMake از مشخصات مجموعه ابزار پشتیبانی می‌کنند تا به سیستم ساخت بومی نحوه انتخاب کامپایلر را اعلام کنند. برای جزئیات به متغیر CMAKE_GENERATOR_TOOLSET <#variable:CMAKE_GENERATOR_TOOLSET> مراجعه فرمایید.

تعیین نام پلتفرم در صورت پشتیبانی توسط تولیدکننده.

برخی تولیدکننده‌های CMake از ارائه نام پلتفرم به سیستم ساخت بومی جهت انتخاب کامپایلر یا SDK پشتیبانی می‌کنند. برای جزئیات به متغیر CMAKE_GENERATOR_PLATFORM <#variable:CMAKE_GENERATOR_PLATFORM> مراجعه فرمایید.

افزوده‌شده در نسخه 3.21.

تعیین فایل زنجیره ابزار (toolchain) برای کامپایل چندسکویی (cross-compiling)، معادل با تنظیم متغیر CMAKE_TOOLCHAIN_FILE <#variable:CMAKE_TOOLCHAIN_FILE>. مسیرهای نسبی نسبت به دایرکتوری ساخت تفسیر می‌شوند، و در صورت عدم وجود، نسبت به دایرکتوری منبع سنجیده خواهند شد.

افزوده‌شده در نسخه 3.21.

تعیین دایرکتوری نصب که توسط متغیر CMAKE_INSTALL_PREFIX <#variable:CMAKE_INSTALL_PREFIX> استفاده می‌شود. باید یک مسیر مطلق باشد.

افزوده‌شده در نسخه 4.0.

تعیین یک نام جایگزین برای فایل پروژه.

این گزینه فایل سطح بالایی را که توسط CMake هنگام پیکربندی یک پروژه پردازش می‌شود، و همچنین فایلی را که توسط add_subdirectory() <#command:add_subdirectory> پردازش می‌شود مشخص می‌کند.

به طور پیش‌فرض، این مقدار CMakeLists.txt است. در صورت تنظیم روی هر نام دیگری، هر زمان که فایل مشخص‌شده در زیردایرکتوری یک پروژه یافت نشود، از CMakeLists.txt به عنوان گزینه جایگزین (fallback) استفاده خواهد شد.

نکته:

این ویژگی برای استفاده موقت توسعه‌دهندگان در طول یک گذار تدریجی طراحی شده است و نه برای انتشار یک محصول نهایی. هر زمان که فایل پروژه چیزی غیر از CMakeLists.txt باشد، CMake همواره یک هشدار صادر خواهد کرد.
ارتقای دسته‌بندی تشخیصی مشخص‌شده (و تمام زیرمجموعه‌های آن) به حداقل سطح شدت WARN. توجه داشته باشید که این گزینه تاثیری بر تشخیص‌هایی که از قبل روی سطح شدت بالاتری تنظیم شده‌اند ندارد.

برای مشاهده فهرستی از مقادیر مجاز برای <category> به راهنمای cmake-diagnostics(7) <#manual:cmake-diagnostics(7)> مراجعه نمایید.

غیرفعال‌سازی (نادیده گرفتن) تمام تشخیص‌های دسته‌بندی مشخص‌شده، از جمله تمامی دسته‌بندی‌های فرزند (زیرمجموعه).
ارتقای دسته‌بندی تشخیصی مشخص‌شده (و تمام زیرمجموعه‌های آن) به حداقل سطح شدت SEND_ERROR. توجه داشته باشید که این گزینه تاثیری بر تشخیص‌هایی که از قبل روی سطح شدت بالاتری تنظیم شده‌اند ندارد.
تنزل دسته‌بندی تشخیصی مشخص‌شده (و تمام زیرمجموعه‌های آن) به حداکثر سطح شدت WARN. توجه داشته باشید که این گزینه تاثیری بر تشخیص‌هایی که از قبل روی سطح شدت پایین‌تری تنظیم شده‌اند ندارد.
منسوخ‌شده از نسخه 4.4.

مترادف‌های سازگاری برای گزینه‌های -Wauthor / -Wno-author.

افزوده‌شده در نسخه 3.24.

انجام یک پیکربندی تازه روی درخت ساخت. این گزینه هرگونه فایل CMakeCache.txt موجود و دایرکتوری CMakeFiles/ مرتبط را حذف کرده و آن‌ها را از ابتدا دوباره می‌سازد.

تغییریافته در نسخه 3.30: برای وابستگی‌هایی که پیش‌تر توسط FetchContent <#module:FetchContent> با تنظیم NEW برای خط‌مشی CMP0168 <#policy:CMP0168> مقداردهی شده بودند، فایل‌های نشان‌زمانی (stamp) و اسکریپت‌های اجرای قبلی آن‌ها حذف خواهند شد. بنابراین مراحل دانلود، به‌روزرسانی و اعمال وصله مجبور به اجرای مجدد خواهند بود.

فهرست کردن متغیرهای غیرپیشرفته ذخیره‌شده در کش (حافظه پنهان).

فهرست کردن متغیرهای CACHE موجب اجرای CMake شده و تمام متغیرهایی از CACHE در CMake را که به صورت INTERNAL یا ADVANCED <#prop_cache:ADVANCED> علامت‌گذاری نشده‌اند فهرست می‌کند. این امر در عمل تنظیمات جاری CMake را نمایش می‌دهد، که سپس می‌توان آن‌ها را با گزینه -D تغییر داد. تغییر برخی از این متغیرها ممکن است به ایجاد متغیرهای بیشتری منجر شود. اگر A مشخص شود، متغیرهای پیشرفته را نیز نمایش خواهد داد. اگر H مشخص شود، متن راهنما را نیز برای هر متغیر نمایش خواهد داد.

افزوده‌شده در نسخه 3.31.

نمایش متغیرهای غیرپیشرفته مشخص ذخیره‌شده در کش.

نمایش متغیرهایی از CACHE در CMake که نه INTERNAL و نه ADVANCED <#prop_cache:ADVANCED> هستند و با عبارت منظم (regex) داده‌شده تطابق دارند. اگر A مشخص شود، متغیرهای پیشرفته را نیز نمایش خواهد داد. اگر H مشخص شود، متن راهنما را نیز برای هر متغیر نمایش خواهد داد.

تنها حالت مشاهده (فقط‌خواندنی).

فقط حافظه پنهان (کش) را بارگذاری می‌کند؛ مراحل پیکربندی (configure) و تولید (generate) در عمل اجرا نمی‌شوند.

تولید گراف‌های Graphviz https://www.graphviz.org از وابستگی‌ها

این گزینه یک فایل ورودی graphviz تولید می‌کند که شامل تمام وابستگی‌های کتابخانه‌ای و اجرایی پروژه است و وابستگی‌های بین هدف‌ها (targets) در یک پروژه و همچنین کتابخانه‌های خارجی لینک‌شده را نمایش می‌دهد.

هنگام اجرای CMake با گزینه --graphviz=foo.dot، خروجی‌های زیر تولید می‌شوند:

  • یک فایل foo.dot، که تمام وابستگی‌های درون پروژه را نشان می‌دهد
  • یک فایل foo.dot.<target> برای هر هدف، که نشان می‌دهد به چه هدف‌های دیگری وابسته است
  • یک فایل foo.dot.<target>.dependers برای هر هدف، که نشان می‌دهد چه هدف‌های دیگری به آن وابسته هستند

این فایل‌های .dot را می‌توان با استفاده از دستور dot از بسته Graphviz به تصویر تبدیل کرد:

dot -Tpng -o foo.png foo.dot

اضافه‌شده در نسخه 3.10: انواع مختلف وابستگی شامل PUBLIC، INTERFACE و PRIVATE به‌صورت یال‌های ممتد (solid)، خط‌چین (dashed) و نقطه‌چین (dotted) نمایش داده می‌شوند.

متغیرهای اختصاصی پشتیبانی از Graphviz

گراف‌های حاصل ممکن است بسیار بزرگ باشند. ظاهر و محتوای گراف‌های تولیدشده را می‌توان با استفاده از فایل CMakeGraphVizOptions.cmake کنترل کرد. این فایل ابتدا در CMAKE_BINARY_DIR <#variable:CMAKE_BINARY_DIR> و سپس در CMAKE_SOURCE_DIR <#variable:CMAKE_SOURCE_DIR> جستجو می‌شود. در صورت پیدا شدن، متغیرهای تنظیم‌شده در آن برای سفارشی‌سازی گزینه‌های فایل‌های Graphviz تولیدشده به کار می‌روند.

نام گراف.
  • اجباری: خیر
  • پیش‌فرض: مقدار CMAKE_PROJECT_NAME <#variable:CMAKE_PROJECT_NAME>
هدر نوشته‌شده در بالای فایل‌های Graphviz.
  • اجباری: خیر
  • پیش‌فرض: "node [ fontsize = "12" ];"
پیشوند هر گره (node) در فایل‌های Graphviz.
  • اجباری: خیر
  • پیش‌فرض: "node"
تنظیم روی FALSE برای حذف فایل‌های اجرایی از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های ایستا (static) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های اشتراکی (shared) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های ماژول (module) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های رابط (interface) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های شیء (object) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های ناشناخته (unknown) از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای حذف کتابخانه‌های خارجی از گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی TRUE برای گنجاندن هدف‌های سفارشی (custom targets) در گراف‌های تولیدشده.
  • اجباری: خیر
  • پیش‌فرض: FALSE
فهرستی از عبارات باقاعده برای نام هدف‌هایی که باید از گراف‌های تولیدشده کنار گذاشته شوند.
  • اجباری: خیر
  • پیش‌فرض: خالی
تنظیم روی FALSE برای عدم تولید گراف‌های مجزا به‌ازای هر هدف (foo.dot.<target>).
  • اجباری: خیر
  • پیش‌فرض: TRUE
تنظیم روی FALSE برای عدم تولید گراف‌های وابسته‌دار (foo.dot.<target>.dependers).
  • اجباری: خیر
  • پیش‌فرض: TRUE
تخلیه اطلاعات مربوط به این سیستم.

مجموعه وسیعی از اطلاعات سیستم فعلی را استخراج و ارائه می‌کند. اگر از بالاترین سطح درخت باینری یک پروژه CMake اجرا شود، اطلاعات بیشتری نظیر حافظه موقت (cache)، فایل‌های گزارش (log) و غیره را نیز تخلیه می‌کند.

اضافه‌شده در نسخه 3.31.

چاپ دایرکتوری پیکربندی CMake برای پرس‌وجوهای FileAPI در سطح کاربر.

برای جزئیات بیشتر به CMAKE_CONFIG_DIR <#envvar:CMAKE_CONFIG_DIR> مراجعه کنید.

اضافه‌شده در نسخه 3.16.

تنظیم سطح لاگ <level>.

دستور message() <#command:message> تنها پیام‌های مربوط به سطح لاگ مشخص‌شده یا بالاتر را چاپ می‌کند. سطوح معتبر لاگ عبارتند از: ERROR، WARNING، NOTICE، STATUS (پیش‌فرض)، VERBOSE، DEBUG، یا TRACE.

برای پایدار ماندن سطح لاگ بین دفعات اجرای CMake، متغیر CMAKE_MESSAGE_LOG_LEVEL <#variable:CMAKE_MESSAGE_LOG_LEVEL> را به عنوان یک متغیر کش (cache variable) تنظیم کنید. در صورت ارائه هم‌زمان گزینه خط فرمان و متغیر، گزینه خط فرمان اولویت دارد.

به دلایل سازگاری با نسخه‌های پیشین، --loglevel نیز به عنوان مترادفی برای این گزینه پذیرفته می‌شود.

اضافه‌شده در نسخه 3.25: برای روشی جهت استعلام سطح فعلی ثبت لاگ پیام‌ها، دستور cmake_language(GET_MESSAGE_LOG_LEVEL) <#get-message-log-level> را ببینید.

فعال‌سازی نمایش بافتار (context) پیوست‌شده به هر پیام در خروجی دستور message() <#command:message>.

این گزینه نمایش بافتار را فقط برای اجرای فعلی CMake فعال می‌کند. برای پایدار نگه‌داشتن نمایش بافتار در تمام اجراهای بعدی CMake، به جای آن متغیر CMAKE_MESSAGE_CONTEXT_SHOW <#variable:CMAKE_MESSAGE_CONTEXT_SHOW> را به عنوان یک متغیر کش تنظیم کنید. در صورت ارائه این گزینه خط فرمان، مقدار متغیر CMAKE_MESSAGE_CONTEXT_SHOW <#variable:CMAKE_MESSAGE_CONTEXT_SHOW> نادیده گرفته می‌شود.

اضافه‌شده در نسخه 4.0.

فعال‌سازی ثبت پیام‌های تشخیصی (diagnostic) تولیدشده توسط CMake در قالب SARIF.

پیام‌های تشخیصی را در یک فایل SARIF در مسیر مشخص‌شده می‌نویسد. همچنین پروژه‌ها می‌توانند با تنظیم CMAKE_EXPORT_SARIF <#variable:CMAKE_EXPORT_SARIF> روی ON، این قابلیت را برای یک درخت ساخت فعال کنند.

عدم حذف فایل‌ها و دایرکتوری‌های ایجادشده برای فراخوانی‌های try_compile() <#command:try_compile> / try_run() <#command:try_run>. این گزینه هنگام اشکال‌زدایی بررسی‌های ناموفق مفید است.

توجه داشته باشید که برخی از کاربردهای try_compile() <#command:try_compile> ممکن است از درخت ساخت مشترک استفاده کنند، که در صورت اجرای بیش از یک try_compile() <#command:try_compile> توسط پروژه، سودمندی این گزینه را محدود می‌سازد. به عنوان مثال، چنین کاربردهایی ممکن است نتایج را تغییر دهند زیرا خروجی‌ها و آثار برجامانده از یک try-compile قبلی ممکن است باعث شود آزمایشی دیگر به‌اشتباه قبول یا رد شود. بهتر است از این گزینه صرفاً در زمان اشکال‌زدایی استفاده شود.

(با توجه به موارد فوق، دستور try_run() <#command:try_run> عملاً نوعی try_compile() <#command:try_compile> محسوب می‌شود. هرگونه ترکیب این دو مشمول مشکلات احتمالی شرح‌داده‌شده خواهد بود.)

اضافه‌شده در نسخه 3.25: هنگامی که این گزینه فعال باشد، در هر بررسی try-compile یک پیام لاگ چاپ می‌شود که دایرکتوری محل اجرای بررسی را گزارش می‌کند.

قرار دادن cmake در حالت اشکال‌زدایی (debug mode).

چاپ اطلاعات تکمیلی در طول اجرای cmake مانند ردگیری پشته (stack traces) با فراخوانی‌های message(SEND_ERROR) <#command:message>.

اضافه‌شده در نسخه 3.17.

قرار دادن دستورات find در cmake در حالت اشکال‌زدایی.

چاپ اطلاعات تکمیلی فراخوانی‌های find در طول اجرای cmake روی خروجی استاندارد خطا. خروجی برای خوانده شدن توسط انسان طراحی شده است و نه برای پردازش خودکار (parsing). همچنین برای اشکال‌زدایی بخش محدودتری از پروژه، به متغیر CMAKE_FIND_DEBUG_MODE <#variable:CMAKE_FIND_DEBUG_MODE> مراجعه کنید.

اضافه‌شده در نسخه 3.23.

قرار دادن دستورات find در cmake در حالت اشکال‌زدایی در هنگام اجرا تحت فراخوانی‌های find_package(<pkg>) <#command:find_package>، که در آن <pkg> مدخلی در فهرست ارائه‌شده از نام بسته‌های حساس به بزرگی و کوچکی حروف (جداشده با کاما) است.

مشابه --debug-find، اما دامنه اشکال‌زدایی را به بسته‌های مشخص‌شده محدود می‌کند.

اضافه‌شده در نسخه 3.23.

قرار دادن دستورات find در cmake در حالت اشکال‌زدایی هنگام فراخوانی با <var> به عنوان متغیر نتیجه، که در آن <var> مدخلی در فهرست ارائه‌شده (جداشده با کاما) است.

مشابه --debug-find، اما دامنه اشکال‌زدایی را به نام‌های متغیر مشخص‌شده محدود می‌کند.

قرار دادن cmake در حالت ردگیری (trace).

چاپ ردگیری از تمام فراخوانی‌های انجام‌شده و مبدأ آن‌ها.

--trace-expand
قرار دادن cmake در حالت ردگیری (trace).

مشابه --trace، اما با متغیرهای بسط‌یافته (مقداردهی‌شده).

--trace-format=<format>
اضافه‌شده در نسخه 3.17.

قرار دادن cmake در حالت ردگیری و تنظیم قالب خروجی ردگیری.

مقدار <format> می‌تواند یکی از مقادیر زیر باشد:

چاپ هر خط ردگیری در قالبی خوانا برای انسان (human-readable). این قالب پیش‌فرض است.
چاپ هر خط به عنوان یک سند JSON مجزا. هر سند با یک خط جدید (\n) جدا می‌شود. تضمین می‌شود که هیچ نویسه خط جدیدی در درون یک سند JSON وجود نخواهد داشت.

قالب ردگیری JSON

{
  "file": "/full/path/to/the/CMake/file.txt",
  "line": 0,
  "cmd": "add_executable",
  "args": ["foo", "bar"],
  "time": 1579512535.9687231,
  "frame": 2,
  "global_frame": 4
}

عضوها عبارتند از:

مسیر کامل به فایل منبع CMake که تابع در آن فراخوانی شده است.
شماره خط در file که فراخوانی تابع از آن آغاز می‌شود.
اگر فراخوانی تابع چندین خط را در بر بگیرد، این فیلد برابر با خطی تنظیم می‌شود که فراخوانی تابع در آن پایان می‌یابد. اگر فراخوانی تابع تنها شامل یک خط باشد، این فیلد تنظیم نخواهد شد. این فیلد در نسخه فرعی ۲ از قالب json-v1 اضافه شد.
عضو اختیاری که در صورت به تعویق افتادن فراخوانی تابع توسط cmake_language(DEFER) <#defer> وجود دارد. در صورت وجود، مقدار آن یک رشته شامل شناسه فراخوانی به تعویق افتاده <id> است.
نام تابعی که فراخوانی شده است.
یک فهرست رشته‌ای از تمام پارامترهای تابع.
برچسب زمانی (ثانیه‌های سپری‌شده از epoch) برای فراخوانی تابع.
عمق فریم پشته (stack frame) برای تابعی که فراخوانی شده، در بستر فایل CMakeLists.txt که در حال حاضر در حال پردازش است.
عمق فریم پشته برای تابعی که فراخوانی شده، که به‌صورت سراسری در تمام فایل‌های CMakeLists.txt درگیر در فرآیند ردگیری دنبال می‌شود. این فیلد در نسخه فرعی ۲ از قالب json-v1 اضافه شد.

علاوه بر این، نخستین سند JSON ارائه‌شده در خروجی شامل کلید version برای نسخه‌های اصلی و فرعی فعلی است:

قالب نسخه JSON

{
  "version": {
    "major": 1,
    "minor": 2
  }
}

عضوها عبارتند از:

نشان‌دهنده نسخه قالب JSON است. این نسخه دارای مولفه‌های اصلی (major) و فرعی (minor) طبق قراردادهای نسخه‌گذاری معنایی است.
--trace-source=<file>
قرار دادن cmake در حالت ردگیری، اما خروجی دادن تنها به خطوط یک فایل مشخص‌شده محدود می‌شود.

استفاده از چندین گزینه از این نوع مجاز است.

--trace-redirect=<file>
قرار دادن cmake در حالت ردگیری و تغییر مسیر خروجی ردگیری به یک فایل به‌جای stderr.
منسوخ‌شده از نسخه 4.4.

مترادف سازگاری برای -Wuninitialized.

منسوخ‌شده از نسخه 3.19.

هیچ کاری انجام نمی‌دهد. در نسخه‌های 3.2 و پایین‌تر CMake این گزینه هشدارهای مربوط به متغیرهای استفاده‌نشده را فعال می‌کرد. در نسخه‌های 3.3 تا 3.18 از CMake این گزینه دچار اشکال بود. در CMake نسخه 3.19 و بالاتر این گزینه حذف شده است.

منسوخ‌شده از نسخه 4.4.

مترادف سازگاری برای -Wno-unused-cli.

یافتن مشکلات در نحوه استفاده از متغیرها در فایل‌های سیستم.

به‌طور معمول، متغیرهای استفاده‌نشده و مقداردهی‌نشده تنها در CMAKE_SOURCE_DIR <#variable:CMAKE_SOURCE_DIR> و CMAKE_BINARY_DIR <#variable:CMAKE_BINARY_DIR> جستجو می‌شوند. این فلگ به CMake اعلام می‌کند که در مورد سایر فایل‌ها نیز هشدار دهد.

اضافه‌شده در نسخه 3.24.

نادیده گرفتن ویژگی هدف COMPILE_WARNING_AS_ERROR <#prop_tgt:COMPILE_WARNING_AS_ERROR> و متغیر CMAKE_COMPILE_WARNING_AS_ERROR <#variable:CMAKE_COMPILE_WARNING_AS_ERROR>، که مانع از برخورد با هشدارها به‌عنوان خطا در زمان کامپایل می‌شود.

اضافه‌شده در نسخه 4.0.

نادیده گرفتن ویژگی هدف LINK_WARNING_AS_ERROR <#prop_tgt:LINK_WARNING_AS_ERROR> و متغیر CMAKE_LINK_WARNING_AS_ERROR <#variable:CMAKE_LINK_WARNING_AS_ERROR>، که مانع از برخورد با هشدارها به‌عنوان خطا در زمان پیوند (link) می‌شود.

اضافه‌شده در نسخه 3.18.

در ترکیب با --profiling-format برای نوشتن خروجی در یک مسیر مشخص به‌کار می‌رود.

فعال‌سازی خروجی داده‌های پروفایل‌سازی اسکریپت CMake در قالب داده‌شده.

این گزینه می‌تواند به تحلیل کارایی اسکریپت‌های اجراشده‌ی CMake کمک کند. برای تبدیل خروجی به قالبی خوانا برای انسان باید از برنامه‌های شخص ثالث استفاده شود.

مقادیر پشتیبانی‌شده در حال حاضر عبارتند از: google-trace خروجی در قالب ردگیری گوگل (Google Trace Format)، که می‌تواند توسط برگه <about:tracing> در مرورگر Google Chrome یا با استفاده از یک افزونه برای ابزاری مانند Trace Compass تجزیه و تحلیل شود.

یک پیش‌تنظیم (preset) <#manual:cmake-presets(7)> را از فایل‌های پیش‌تنظیم CMake می‌خواند. فایل‌های CMakePresets.json و CMakeUserPresets.json فایل‌های پیش‌فرض هستند که باید در همان دایرکتوریِ فایل سطح‌بالای CMakeLists.txt قرار داشته باشند. همچنین می‌توان یک فایل را با --presets-file مشخص نمود.

پیش‌تنظیم ممکن است تولیدکننده، دایرکتوری ساخت، فهرستی از متغیرها و سایر آرگومان‌ها را برای ارسال به CMake مشخص کند.

رابط کاربری گرافیکی CMake GUI <#manual:cmake-gui(1)> نیز فایل‌های CMakePresets.json و CMakeUserPresets.json را تشخیص داده و پشتیبانی می‌کند. برای جزئیات کامل در مورد این فایل‌ها، cmake-presets(7) <#manual:cmake-presets(7)> را ببینید.

پیش‌تنظیم‌ها قبل از تمام گزینه‌های دیگر خط فرمان خوانده می‌شوند، اگرچه از گزینه -S می‌توان برای مشخص کردن دایرکتوری منبع حاوی فایل‌های CMakePresets.json و CMakeUserPresets.json استفاده کرد. اگر نه -S و نه --presets-file داده نشده باشند، دایرکتوری کاری فعلی به عنوان دایرکتوری منبع سطح‌بالا فرض می‌شود و باید حاوی CMakePresets.json و/یا CMakeUserPresets.json باشد.

گزینه‌های مشخص‌شده توسط پیش‌تنظیم انتخاب‌شده (متغیرها، تولیدکننده و غیره) همگی می‌توانند با مشخص کردن دستی آن‌ها در خط فرمان بازنویسی (override) شوند. برای نمونه، اگر پیش‌تنظیم متغیری به نام MYVAR را روی 1 تنظیم کند، اما کاربر آن را با استفاده از آرگومان -D روی 2 تنظیم نماید، مقدار 2 اولویت خواهد داشت.

اضافه‌شده در نسخه 3.21: گزینه -B می‌تواند به‌صورت اختیاری با یک دایرکتوری باینری متفاوت از دایرکتوری مشخص‌شده توسط فیلد binaryDir <#cmakepresets-configurepresets-binarydir> تعیین شود.

تغییریافته در نسخه 4.4: در صورت مشخص شدن --presets-file، نیازی به حضور هیچ‌یک از فایل‌های CMakePresets.json یا CMakeUserPresets.json نیست. در نسخه‌های پیشین، وجود این فایل‌ها در دایرکتوری منبع سطح‌بالا (خواه از طریق -S یا دایرکتوری کاری فعلی) اکیداً الزامی بود.

اضافه‌شده در نسخه 4.4.

خواندن پیش‌تنظیم‌ها (presets) <#manual:cmake-presets(7)> از <file> داده‌شده. مسیر مشخص‌شده می‌تواند مطلق یا نسبت به دایرکتوری کاری فعلی باشد. اگر --presets-file داده شود، پیش‌تنظیم‌های تعریف‌شده در CMakePresets.json و CMakeUserPresets.json نادیده گرفته خواهند شد.

فهرست کردن پیش‌تنظیم‌های موجود برای <type> مشخص‌شده. مقادیر معتبر برای <type> عبارتند از configure، build، test، package یا all. اگر <type> حذف شود، مقدار configure فرض می‌شود.

تغییریافته در نسخه 4.4: اگر --presets-file مشخص شود، پیش‌تنظیم‌های تعریف‌شده در <file> ارائه‌شده فهرست خواهند شد. در غیر این صورت، دایرکتوری منبع سطح‌بالا (خواه از طریق -S یا دایرکتوری کاری فعلی) باید حاوی CMakePresets.json و/یا CMakeUserPresets.json باشد. در نسخه‌های پیشین، مورد دوم اکیداً الزامی بود.

اشکال‌زدایی تعاملی (interactive debugging) زبان CMake را فعال می‌کند. CMake یک رابط اشکال‌زدایی را روی لوله (pipe) تعیین‌شده توسط --debugger-pipe ارائه می‌دهد که با مشخصات Debug Adapter Protocol https://microsoft.github.io/debug-adapter-protocol با تغییرات زیر مطابقت دارد:

پاسخ initialize شامل یک فیلد اضافی به نام cmakeVersion است که نسخه CMake در حال اشکال‌زدایی را مشخص می‌کند.

پاسخ initialize اشکال‌زدا

{
  "cmakeVersion": {
    "major": 3,
    "minor": 27,
    "patch": 0,
    "full": "3.27.0"
  }
}

عضوها عبارتند از:

یک عدد صحیح که شماره نسخه اصلی (major) را مشخص می‌کند.
یک عدد صحیح که شماره نسخه فرعی (minor) را مشخص می‌کند.
یک عدد صحیح که شماره نسخه وصله (patch) را مشخص می‌کند.
یک رشته که نسخه کامل CMake را مشخص می‌کند.
--debugger-pipe <pipe name>, --debugger-pipe=<pipe name>;
نام لوله (در ویندوز) یا سوکت دامنه (در یونیکس) مورد استفاده برای ارتباط با اشکال‌زدا.
--debugger-dap-log <log path>, --debugger-dap-log=<log path>;
ثبت تمامی ارتباطات اشکال‌زدا در فایل مشخص‌شده.

ابزار CMake یک ساختار خط فرمانی برای ساخت درخت باینری یک پروژه که از قبل تولید شده است ارائه می‌دهد:

cmake --build <dir>                     [<options>] [-- <build-tool-options>]
cmake --build [<dir>] --preset <preset> [<options>] [-- <build-tool-options>]

این دستور رابط خط فرمان یک ابزار ساخت بومی را با گزینه‌های زیر انتزاع می‌کند:

دایرکتوری باینری پروژه‌ای که باید ساخته شود. این گزینه الزامی است (مگر اینکه یک پیش‌تنظیم مشخص شده باشد) و باید در ابتدا قرار گیرد.
استفاده از یک پیش‌تنظیم (preset) ساخت <#manual:cmake-presets(7)> برای مشخص کردن گزینه‌های ساخت. دایرکتوری باینری پروژه از کلید configurePreset <#cmakepresets-buildpresets-configurepreset> استنتاج می‌شود، مگر اینکه یک دایرکتوری پس از --build مشخص شده باشد.

اضافه‌شده در نگارش 4.3: دستور cmake --build اکنون از مشخص کردن هم‌زمان دایرکتوری ساخت و پیش‌تنظیم پشتیبانی می‌کند.

تغییریافته در نگارش 4.4: دیگر نیازی نیست cmake --build <dir> --preset از دایرکتوری حاوی CMakePresets.json یا CMakeUserPresets.json فراخوانی شود. اگر --presets-file مشخص شده باشد، CMake از آن فایل استفاده خواهد کرد؛ در غیر این صورت، فایل(های) پیش‌تنظیم را می‌توان از CMakeCache.txt دایرکتوری ساخت فعلی استنتاج کرد.

اضافه‌شده در نگارش 4.4.

خواندن پیش‌تنظیمات <#manual:cmake-presets(7)> از <file> مشخص‌شده. مسیر مشخص‌شده می‌تواند مطلق یا نسبت به دایرکتوری کاری فعلی باشد. اگر --presets-file داده شود، پیش‌تنظیمات تعریف‌شده در CMakePresets.json و CMakeUserPresets.json نادیده گرفته خواهند شد.

فهرست کردن پیش‌تنظیمات ساخت موجود.

تغییریافته در نگارش 4.4: دیگر نیازی نیست cmake --build <dir> --list-presets از دایرکتوری حاوی CMakePresets.json یا CMakeUserPresets.json فراخوانی شود. اگر --presets-file مشخص شده باشد، تنها پیش‌تنظیمات تعریف‌شده در <file> داده‌شده فهرست خواهند شد؛ در غیر این صورت، فایل(های) پیش‌تنظیم از CMakeCache.txt دایرکتوری ساخت فعلی استنتاج می‌شوند.

-j [<jobs>], --parallel [<jobs>]
اضافه‌شده در نگارش 3.12.

حداکثر تعداد فرآیندهای هم‌زمان برای استفاده در هنگام ساخت. اگر <jobs> حذف شود، تعداد پیش‌فرض ابزار ساخت بومی استفاده می‌شود.

متغیر محیطی CMAKE_BUILD_PARALLEL_LEVEL <#envvar:CMAKE_BUILD_PARALLEL_LEVEL> در صورت تنظیم، سطح موازی‌سازی پیش‌فرض را در صورت ارائه نشدن این گزینه مشخص می‌کند.

برخی از ابزارهای ساخت بومی همیشه به صورت موازی می‌سازند. استفاده از مقدار 1 برای <jobs> می‌تواند برای محدود کردن به یک فرآیند منفرد استفاده شود.

-t <tgt>..., --target <tgt>...
ساخت <tgt> به‌جای هدف پیش‌فرض. می‌توان چندین هدف را با فاصله از یکدیگر مشخص کرد.
برای ابزارهای چندپیکربندی (multi-configuration)، پیکربندی <cfg> را انتخاب می‌کند.
ابتدا هدف clean را ساخته و سپس اقدام به ساخت می‌کند. (تنها برای پاکسازی، از --target clean استفاده کنید.)
اضافه‌شده در نگارش 3.23.

حل ارجاعات بسته‌های راه دور از مدیران بسته خارجی (مانند NuGet) قبل از ساخت. هنگامی که <value> روی on تنظیم شود (پیش‌فرض)، بسته‌ها پیش از ساخت یک هدف بازیابی خواهند شد. هنگامی که <value> روی only تنظیم شود، بسته‌ها بازیابی می‌شوند اما هیچ ساختی انجام نخواهد شد. هنگامی که <value> روی off تنظیم شود، هیچ بسته‌ای بازیابی نخواهد شد.

اگر هدف هیچ ارجاع بسته‌ای تعریف نکرده باشد، این گزینه هیچ کاری انجام نمی‌دهد.

این تنظیم را می‌توان در یک پیش‌تنظیم ساخت (با استفاده از resolvePackageReferences) مشخص کرد. در صورت مشخص شدن این گزینه خط فرمان، تنظیم پیش‌تنظیم نادیده گرفته خواهد شد.

اگر هیچ پارامتر خط فرمان یا گزینه پیش‌تنظیمی ارائه نشود، یک متغیر کَش ویژه محیط ارزیابی می‌شود تا تصمیم گرفته شود که آیا بازیابی بسته باید انجام گیرد یا خیر.

هنگام استفاده از تولیدکننده‌های ویژوال استودیو (Visual Studio Generators) <#visual-studio-generators>، ارجاعات بسته با استفاده از ویژگی VS_PACKAGE_REFERENCES <#prop_tgt:VS_PACKAGE_REFERENCES> تعریف می‌شوند. ارجاعات بسته با استفاده از NuGet بازیابی می‌شوند. این ویژگی را می‌توان با تنظیم متغیر CMAKE_VS_NUGET_PACKAGE_RESTORE روی OFF غیرفعال کرد.

نادیده گرفته می‌شود. این رفتار در CMake >= 3.0 پیش‌فرض است.
فعال‌سازی خروجی پرجزئیات - در صورت پشتیبانی - شامل دستورات ساختی که باید اجرا شوند.

در صورتی که متغیر محیطی VERBOSE <#envvar:VERBOSE> یا متغیر کَش‌شده‌ی CMAKE_VERBOSE_MAKEFILE <#variable:CMAKE_VERBOSE_MAKEFILE> تنظیم شده باشد، می‌توان این گزینه را نادیده گرفت.

--
انتقال گزینه‌های باقی‌مانده به ابزار بومی ساخت.

برای راهنمای سریع، دستور cmake --build را بدون هیچ گزینه‌ای اجرا کنید.

دستور cmake --build در برخی از تولیدکننده‌ها رفتار خاصی دارد:

Xcode <#generator:Xcode>

اضافه‌شده در نگارش 4.1: اگر یک ابزار شخص ثالث فایلی با پسوند .xcworkspace در کنار .xcodeproj تولیدشده توسط CMake ایجاد کرده باشد، cmake --build در عوض ساخت را از طریق workspace هدایت می‌کند.

ابزار CMake یک ساختار خط فرمانی برای نصب درخت باینری یک پروژه که از قبل تولید شده است فراهم می‌کند:

cmake --install <dir> [<options>]

می‌توان از این دستور پس از ساخت یک پروژه برای اجرای نصب بدون استفاده از سیستم ساخت تولیدشده یا ابزار ساخت بومی استفاده کرد. گزینه‌ها عبارتند از:

دایرکتوری باینری پروژه برای نصب. این گزینه الزامی است و باید در ابتدا قرار گیرد.
برای تولیدکننده‌های چندپیکربندی (multi-configuration)، پیکربندی <cfg> را انتخاب می‌کند.
نصب مبتنی بر مؤلفه (Component). تنها مؤلفه <comp> را نصب می‌کند.

اضافه‌شده در نگارش 4.4: از نصب بیش از یک مؤلفه پشتیبانی می‌کند:

  • --component <compA> <compB>
  • --component <compA> --component <compB>
مجوزهای پیش‌فرض دایرکتوری در هنگام نصب. مجوزها در قالب <u=rwx,g=rx,o=rx> هستند.
یک پیشوند (prefix) نصب جایگزین را مشخص می‌کند، و مقدار متغیر CMAKE_INSTALL_PREFIX <#variable:CMAKE_INSTALL_PREFIX> را به طور موقت در مرحله نصب جایگزین می‌نماید.

هدف اصلی این گزینه این است که اجازه دهد نصب در یک مکان دلخواه انجام شود. این گزینه معمولاً در گردش‌های کاری خاص نصب و بسته‌بندی استفاده می‌شود. این عمل مشابه انتخاب دایرکتوری نصب در طول مرحله نصب است؛ به عنوان مثال در ویندوز، که کاربر ممکن است پوشه مقصد را برای پروژه انتخاب کند.

توجه:

هنگامی که پروژه از ماژول GNUInstallDirs <#module:GNUInstallDirs> استفاده می‌کند، موارد خاصی <#gnuinstalldirs-special-cases> وجود دارند که بر اساس مقدار متغیر CMAKE_INSTALL_PREFIX <#variable:CMAKE_INSTALL_PREFIX> در فاز پیکربندی ارزیابی می‌شوند. نتایج این ارزیابی حتی در صورتی که در حین نصب از یک پیشوند جایگزین استفاده شود، همچنان پابرجا خواهند ماند.
حذف نمادهای اشکال‌زدایی (strip) پیش از نصب.
فعال‌سازی خروجی پرجزئیات.

در صورتی که متغیر محیطی VERBOSE <#envvar:VERBOSE> تنظیم شده باشد، می‌توان از این گزینه صرف‌نظر کرد.

-j <jobs>, --parallel <jobs>
اضافه‌شده در نگارش 3.31.

نصب به صورت موازی با استفاده از تعداد کارهای مشخص‌شده. تنها در صورتی در دسترس است که ویژگی INSTALL_PARALLEL <#prop_gbl:INSTALL_PARALLEL> فعال باشد. متغیر محیطی CMAKE_INSTALL_PARALLEL_LEVEL <#envvar:CMAKE_INSTALL_PARALLEL_LEVEL> در صورت مشخص نشدن این گزینه، سطح موازی‌سازی پیش‌فرض را تعیین می‌کند.

برای راهنمای سریع، cmake --install را بدون هیچ گزینه‌ای اجرا کنید.

cmake --open <dir>

باز کردن پروژه تولیدشده در برنامه مرتبط با آن. این ویژگی تنها توسط برخی از تولیدکننده‌ها پشتیبانی می‌شود.

cmake [-D <var>=<value>]... -P <cmake-script-file> [-- <unparsed-options>...]
تعریف یک متغیر برای حالت اسکریپت.
پردازش فایل cmake داده‌شده به عنوان یک اسکریپت نوشته‌شده به زبان CMake. هیچ مرحله پیکربندی یا تولیدی انجام نمی‌شود و کَش تغییر نمی‌کند. اگر متغیرها با استفاده از -D تعریف می‌شوند، این کار باید قبل از آرگومان -P انجام شود.

هر گزینه‌ای پس از -- توسط CMake تجزیه نمی‌شود، اما همچنان در مجموعه متغیرهای CMAKE_ARGV<n> <#variable:CMAKE_ARGV0> ارسالی به اسکریپت گنجانده می‌شود (شامل خود --).

ابزار CMake ابزارهای خط فرمان داخلی را از طریق ساختار (signature) زیر فراهم می‌کند:

cmake -E <command> [<options>]
برای مشاهده خلاصه‌ای از دستورها، cmake -E یا cmake -E help را اجرا کنید.

دستورهای موجود عبارتند از:

اضافه‌شده در نسخه 4.3.

یک فایل باینری را به یک آرایه C تبدیل می‌کند. اگر فایل ورودی مشخص نشده باشد یا - باشد، به جای فایل از ورودی استاندارد خوانده می‌شود. اگر فایل خروجی مشخص نشده باشد یا - باشد، به جای فایل در خروجی استاندارد نوشته می‌شود.

به‌طور پیش‌فرض، این دستور فقط بایت‌ها را چاپ می‌کند. متن دربرگیرنده را می‌توان با آرگومان --template-file اضافه کرد. همچنین می‌توانید بایت‌ها را از یک فایل دیگر #include کنید که به عنوان جایگزین مستقیم (drop-in replacement) برای دستورالعمل #embed در C23 و C++26 عمل می‌کند:

unsigned char my_bytes[] = {
/* #embed "bin2c_input.bin" */
#include "bin2c_output.c.txt"
};
بایت‌ها را به جای اعداد صحیح بدون علامت (unsigned)، به صورت اعداد صحیح علامت‌دار (signed) چاپ می‌کند.
بایت‌ها را به جای هگزادسیمال، به صورت ده‌دهی (decimal) چاپ می‌کند.
یک کامای انتهایی پس از آخرین بایت اضافه می‌کند (به‌طور پیش‌فرض اضافه نمی‌شود).
قالب‌بندی بر اساس یک فایل الگو (template). فایل الگو شامل جانگهدارها (placeholders) برای آرایه و به صورت اختیاری برای طول آن (که یک عدد صحیح ده‌دهی غیرمنفی خواهد بود) است. این جانگهدارها در ابتدا و انتهای خود توسط @ محصور می‌شوند. این قابلیت مشابه configure_file() <#command:configure_file> است که با آرگومان @ONLY فراخوانی شده باشد، اما تنها جانگهدار‌های آرایه و طول جایگزین خواهند شد و هر جانگهدار دیگری بدون تغییر باقی می‌ماند.

نمونه‌ای از یک فایل الگوی بالقوه:

unsigned char my_bytes[] = {@array@};
size_t length = @length@;

جانگهدار آرایه حداکثر یک بار می‌تواند در فایل الگو بیاید. جانگهدار طول می‌تواند صفر یا چند بار بعد از جانگهدار آرایه بیاید، اما قبل از آن نمی‌تواند قرار گیرد.

توجه داشته باشید که طول برابر با تعداد عناصر چاپ‌شده است، و در صورتی که نوعی غیر از unsigned char استفاده شود، ممکن است با sizeof آرایه حاصل مطابقت نداشته باشد.

یک نام برای جانگهدار آرایه در فایل الگو تعیین می‌کند. به‌طور پیش‌فرض روی array تنظیم است.
یک نام برای جانگهدار طول در فایل الگو تعیین می‌کند. به‌طور پیش‌فرض روی length تنظیم است.
اضافه‌شده در نسخه 3.7.

قابلیت‌های cmake را در قالب JSON گزارش می‌دهد. خروجی یک شیء JSON با کلیدهای زیر است:

یک شیء JSON حاوی اطلاعات نسخه. کلیدها عبارتند از:
رشته کامل نسخه همان‌طور که توسط cmake --version نمایش داده می‌شود.
شماره نسخه اصلی (major) در قالب عدد صحیح.
شماره نسخه فرعی (minor) در قالب عدد صحیح.
سطح وصله (patch) در قالب عدد صحیح.
رشته پسوند نسخه cmake.
یک مقدار بولی (bool) که اگر ساخت cmake از یک درخت کاری تغییریافته (dirty tree) باشد تنظیم می‌شود.
فهرستی از تولیدکننده‌های موجود. هر تولیدکننده یک شیء JSON با کلیدهای زیر است:
رشته‌ای شامل نام تولیدکننده.
اگر تولیدکننده از مجموعه‌ابزارها (toolsets) پشتیبانی کند مقدار true و در غیر این صورت false است.
اگر تولیدکننده از پلتفرم‌ها پشتیبانی کند مقدار true و در غیر این صورت false است.
اضافه‌شده در نسخه 3.21.

عضو اختیاری که ممکن است در صورت پشتیبانی تولیدکننده از مشخص‌سازی پلتفرم از طریق CMAKE_GENERATOR_PLATFORM <#variable:CMAKE_GENERATOR_PLATFORM> (-A ...) وجود داشته باشد. مقدار آن فهرستی از پلتفرم‌هایی است که پشتیبانی از آن‌ها شناخته شده است.

فهرستی از رشته‌ها شامل تمام Extra Generators <#extra-generators> سازگار با تولیدکننده.
عضو اختیاری که در صورت در دسترس بودن cmake-file-api(7) <#manual:cmake-file-api(7)> حضور دارد. مقدار آن یک شیء JSON با یک عضو است:
یک آرایه JSON شامل صفر یا چند درخواست پشتیبانی‌شده file-api. هر درخواست یک شیء JSON با اعضای زیر است:
یکی از انواع شیء Object Kinds <#file-api-object-kinds> پشتیبانی‌شده را مشخص می‌کند.
یک آرایه JSON که هر یک از عناصر آن یک شیء JSON شامل اعضای major و minor است که مؤلفه‌های نسخه را به صورت عدد صحیح غیرمنفی مشخص می‌کنند.
اگر cmake از حالت کارساز (server-mode) پشتیبانی کند true و در غیر این صورت false است. از زمان CMake 3.20 همیشه false است.
اضافه‌شده در نسخه 3.25.

اگر پشتیبانی از TLS فعال باشد true و در غیر این صورت false است.

debugger
اضافه‌شده در نسخه 3.27.

اگر حالت --debugger پشتیبانی شود مقدار true و در غیر این صورت false است.

اضافه‌شده در نسخه 3.18.

فایل‌ها را به هم پیوند می‌دهد (concatenate) و در خروجی استاندارد چاپ می‌کند.

--
اضافه‌شده در نسخه 3.24.

پشتیبانی از آرگومان خط‌تیره دوگانه -- اضافه شد. این پیاده‌سازی پایه‌ای از cat از هیچ گزینه‌ای پشتیبانی نمی‌کند، بنابراین استفاده از گزینه‌ای که با - آغاز شود منجر به خطا خواهد شد. در صورتی که نام فایلی با - آغاز می‌شود، از -- برای مشخص کردن پایان گزینه‌ها استفاده کنید.

اضافه‌شده در نسخه 3.29: دستور cat اکنون می‌تواند با ارسال آرگومان - ورودی استاندارد را چاپ کند.

اضافه‌شده در نسخه 4.4: در صورتی که هیچ آرگومانی ارسال نشود، cat ورودی استاندارد را چاپ خواهد کرد.

دایرکتوری کاری فعلی را تغییر می‌دهد و یک دستور را اجرا می‌کند.
بررسی می‌کند که آیا <file1> با <file2> یکسان است یا خیر. اگر فایل‌ها یکسان باشند، مقدار 0 و در غیر این صورت مقدار 1 را برمی‌گرداند. در صورت وجود آرگومان‌های نامعتبر، مقدار 2 را برمی‌گرداند.
اضافه‌شده در نسخه 3.14.

این گزینه مقایسه خط‌به‌خط را اعمال کرده و تفاوت‌های LF/CRLF را نادیده می‌گیرد.

فایل‌ها را در <destination> (چه فایل و چه دایرکتوری) کپی می‌کند. اگر چندین فایل مشخص شده باشد، یا اگر -t تعیین شده باشد، <destination> باید یک دایرکتوری باشد و باید از قبل وجود داشته باشد. اگر -t مشخص نشده باشد، آرگومان آخر به عنوان <destination> در نظر گرفته می‌شود. نویسه‌های عام (wildcards) پشتیبانی نمی‌شوند. دستور copy پیوندهای نمادین (symlinks) را دنبال می‌کند؛ این بدان معناست که خود پیوندهای نمادین را کپی نمی‌کند، بلکه فایل‌ها یا دایرکتوری‌هایی را که به آن‌ها اشاره می‌کنند کپی می‌کند.

اضافه‌شده در نسخه 3.5: پشتیبانی از چندین فایل ورودی.

اضافه‌شده در نسخه 3.26: پشتیبانی از آرگومان -t.

محتوای دایرکتوری‌های <dir>... را درون دایرکتوری <destination> کپی می‌کند. اگر دایرکتوری <destination> وجود نداشته باشد، ایجاد خواهد شد. اگر -t مشخص نشده باشد، آرگومان آخر به عنوان <destination> در نظر گرفته می‌شود. دستور copy_directory پیوندهای نمادین را دنبال می‌کند.

اضافه‌شده در نسخه 3.5: پشتیبانی از چندین دایرکتوری ورودی.

اضافه‌شده در نسخه 3.15: در صورتی که دایرکتوری مبدأ وجود نداشته باشد، این دستور اکنون با شکست مواجه می‌شود. پیش از این با ایجاد یک دایرکتوری مقصد خالی با موفقیت انجام می‌شد.

اضافه‌شده در نسخه 4.4: پشتیبانی از آرگومان -t.

اضافه‌شده در نسخه 3.26.

محتوای تغییریافته دایرکتوری‌های <dir>... را درون دایرکتوری <destination> کپی می‌کند. اگر دایرکتوری <destination> وجود نداشته باشد، ایجاد خواهد شد. اگر -t مشخص نشده باشد، آرگومان آخر به عنوان <destination> در نظر گرفته می‌شود.

دستور copy_directory_if_different پیوندهای نمادین را دنبال می‌کند. در صورتی که دایرکتوری مبدأ وجود نداشته باشد، این دستور با شکست مواجه می‌شود.

اضافه‌شده در نسخه 4.4: پشتیبانی از آرگومان -t.

اضافه‌شده در نسخه 4.2.

در صورتی که فایل‌های مبدأ جدیدتر از فایل‌های مقصد باشند (بر اساس برچسب زمانی فایل‌ها)، محتوای دایرکتوری‌های <dir>... را درون یک دایرکتوری <destination> کپی می‌کند. اگر دایرکتوری <destination> وجود نداشته باشد، ایجاد خواهد شد. اگر -t مشخص نشده باشد، آرگومان آخر به عنوان <destination> در نظر گرفته می‌شود.

دستور copy_directory_if_newer پیوندهای نمادین را دنبال می‌کند. در صورتی که دایرکتوری مبدأ وجود نداشته باشد، این دستور با شکست مواجه می‌شود. این دستور سریع‌تر از copy_directory_if_different است زیرا به جای مقایسه محتوای فایل‌ها، تنها برچسب زمانی (timestamp) فایل‌ها را با یکدیگر مقایسه می‌کند.

اضافه‌شده در نسخه 4.4: پشتیبانی از آرگومان -t.

فایل‌ها را در صورتی که تغییر کرده باشند در <destination> (چه فایل و چه دایرکتوری) کپی می‌کند. اگر چندین فایل مشخص شده باشد، یا اگر -t مشخص شده باشد، <destination> باید یک دایرکتوری باشد و باید از قبل وجود داشته باشد. دستور copy_if_different پیوندهای نمادین را دنبال می‌کند.

اضافه‌شده در نسخه 3.5: پشتیبانی از چندین فایل ورودی.

اضافه‌شده در نسخه 4.4: پشتیبانی از آرگومان -t.

اضافه‌شده در نسخه 4.2.

فایل‌ها را در صورتی که فایل‌های مبدأ جدیدتر از فایل‌های مقصد باشند (بر اساس برچسب زمانی فایل‌ها) در <destination> (چه فایل و چه دایرکتوری) کپی می‌کند. اگر چندین فایل مشخص شده باشد، یا اگر -t مشخص شده باشد، <destination> باید یک دایرکتوری باشد و باید از قبل وجود داشته باشد. دستور copy_if_newer پیوندهای نمادین را دنبال می‌کند. این دستور سریع‌تر از copy_if_different است زیرا به جای مقایسه محتوای فایل‌ها، تنها برچسب زمانی فایل‌ها را مقایسه می‌کند.

اضافه‌شده در نسخه 4.4: پشتیبانی از آرگومان -t.

یک پیوند نمادین (symbolic link) با نام <new> ایجاد می‌کند که به <old> اشاره دارد.

اضافه‌شده در نسخه 3.13: پشتیبانی از ایجاد پیوندهای نمادین در ویندوز.

نکته:

مسیری که پیوند نمادین <new> در آن ایجاد خواهد شد باید از قبل وجود داشته باشد.
اضافه‌شده در نسخه 3.19.

یک پیوند سخت (hard link) با نام <new> ایجاد می‌کند که به <old> پیوند می‌یابد.

نکته:

مسیری که پیوند سخت <new> در آن ایجاد خواهد شد باید از قبل وجود داشته باشد. همچنین <old> باید از قبل وجود داشته باشد.
آرگومان‌ها را به‌صورت متن نمایش می‌دهد.
آرگومان‌ها را به‌صورت متن اما بدون رفتن به سطر جدید نمایش می‌دهد.
اضافه‌شده در نسخه 3.1.

دستور را در یک محیط تغییریافته اجرا می‌کند. گزینه‌ها عبارتند از:

مقدار فعلی NAME را با VALUE جایگزین می‌کند.
مقدار فعلی NAME را لغو تنظیم (unset) می‌کند.
اضافه‌شده در نسخه 3.25.

یک عملیات تکی ENVIRONMENT_MODIFICATION <#prop_test:ENVIRONMENT_MODIFICATION> را روی محیط تغییریافته اعمال می‌کند.

گزینه‌های NAME=VALUE و --unset=NAME به ترتیب معادل --modify NAME=set:VALUE و --modify NAME=unset: هستند. توجه داشته باشید که --modify NAME=reset: مقدار NAME را به مقداری که در هنگام راه‌اندازی cmake داشت بازنشانی می‌کند (یا آن را لغو تنظیم می‌کند)، نه به مقدار آخرین گزینه NAME=VALUE.

--
اضافه‌شده در نسخه 3.24.

پشتیبانی از آرگومان دو خط تیره -- اضافه شد. از -- برای توقف تفسیر گزینه‌ها/متغیرهای محیطی و در نظر گرفتن آرگومان بعدی به عنوان دستور استفاده کنید، حتی اگر با - شروع شود یا شامل یک = باشد.

متغیرهای محیطی فعلی را نمایش می‌دهد.
اضافه‌شده در نسخه 3.16.

هیچ کاری انجام نمی‌دهد، با کد خروج 1.

دایرکتوری‌های <dir> را ایجاد می‌کند. در صورت لزوم، دایرکتوری‌های والد را نیز ایجاد می‌کند. اگر دایرکتوری از قبل وجود داشته باشد، بدون اعلام خطا نادیده گرفته می‌شود.

اضافه‌شده در نسخه 3.5: پشتیبانی از چندین دایرکتوری ورودی.

ایجاد چک‌سام MD5 فایل‌ها در قالبی سازگار با md5sum:
351abe79cd3800b38cdfb25d45015a15  file1.txt
052f86c15bbde68af55c7f7b340ab639  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

اضافه‌شده در نسخه 3.10.

ایجاد چک‌سام SHA1 فایل‌ها در قالبی سازگار با sha1sum:

4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

اضافه‌شده در نسخه 3.10.

ایجاد چک‌سام SHA224 فایل‌ها در قالبی سازگار با sha224sum:

b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

اضافه‌شده در نسخه 3.10.

ایجاد چک‌سام SHA256 فایل‌ها در قالبی سازگار با sha256sum:

76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

اضافه‌شده در نسخه 3.10.

ایجاد چک‌سام SHA384 فایل‌ها در قالبی سازگار با sha384sum:

acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

اضافه‌شده در نسخه 3.10.

ایجاد چک‌سام SHA512 فایل‌ها در قالبی سازگار با sha512sum:

2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt

تغییریافته در نسخه 4.3: ارسال - از ورودی استاندارد می‌خواند.

منسوخ‌شده از نسخه 3.17.

حذف فایل(ها). رفتار مورد انتظار این بود که اگر هر یک از فایل‌های فهرست‌شده از قبل وجود نداشته باشند، دستور یک کد خروج غیرصفر بازگرداند، اما هیچ پیامی ثبت نشود. گزینه -f رفتار را تغییر می‌دهد تا در عوض در چنین مواقعی یک کد خروج صفر (یعنی موفقیت) بازگرداند. دستور remove پیوندهای نمادین را دنبال نمی‌کند. این بدان معناست که تنها خود پیوندهای نمادین را حذف می‌کند و نه فایل‌هایی را که به آن‌ها اشاره دارد.

پیاده‌سازی آن دارای ایراد (باگ) بود و همواره 0 بازمی‌گرداند. این مورد را نمی‌توان بدون شکستن سازگاری رو به عقب (backwards compatibility) اصلاح کرد. به جای آن از rm استفاده کنید.

منسوخ‌شده از نسخه 3.17.

دایرکتوری‌های <dir> و محتویات آن‌ها را حذف می‌کند. اگر دایرکتوری‌ای وجود نداشته باشد، بدون هیچ پیامی نادیده گرفته می‌شود. به جای آن از rm استفاده کنید.

اضافه‌شده در نسخه 3.15: پشتیبانی از چندین دایرکتوری.

اضافه‌شده در نسخه 3.16: اگر <dir> یک پیوند نمادین به یک دایرکتوری باشد، فقط خود پیوند نمادین حذف خواهد شد.

تغییر نام یک فایل یا دایرکتوری (روی یک درایو یا حجم واحد). اگر فایلی با نام <newname> از قبل وجود داشته باشد، بدون هیچ پیامی جایگزین خواهد شد.
اضافه‌شده در نسخه 3.17.

فایل‌های <file> یا دایرکتوری‌های <dir> را حذف می‌کند. از -r یا -R برای حذف بازگشتی دایرکتوری‌ها و محتویات آن‌ها استفاده کنید. اگر هر یک از فایل‌ها/دایرکتوری‌های فهرست‌شده وجود نداشته باشند، دستور یک کد خروج غیرصفر بازمی‌گرداند، اما هیچ پیامی ثبت نمی‌شود. گزینه -f رفتار را تغییر می‌دهد تا در چنین شرایطی در عوض یک کد خروج صفر (یعنی موفقیت) بازگرداند. از -- برای توقف تفسیر گزینه‌ها و تلقی کردن تمام آرگومان‌های باقی‌مانده به عنوان مسیر استفاده کنید، حتی اگر با - شروع شوند.

اضافه‌شده در نسخه 3.0.

به مدت <number> ثانیه متوقف می‌شود (به خواب می‌رود). <number> می‌تواند یک عدد ممیز شناور باشد. حداقل عملی به دلیل بار سربارِ راه‌اندازی/متوقف‌سازی فایل اجرایی CMake در حدود 0.1 ثانیه است. این امر می‌تواند در یک اسکریپت CMake برای ایجاد وقفه مفید باشد:

# Sleep for about 0.5 seconds
execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 0.5)
یک بایگانی tar یا zip ایجاد یا استخراج می‌کند. گزینه‌ها عبارتند از:
یک بایگانی جدید حاوی فایل‌های مشخص‌شده ایجاد می‌کند. در صورت استفاده، آرگومان <pathname>... الزامی است.
استخراج از بایگانی بر روی دیسک.

اضافه‌شده در نسخه 3.15: آرگومان <pathname>... می‌تواند برای استخراج صرفاً فایل‌ها یا دایرکتوری‌های انتخاب‌شده استفاده شود. هنگام استخراج فایل‌ها یا دایرکتوری‌های انتخاب‌شده، باید نام‌های دقیق آن‌ها شامل مسیر را دقیقاً همان‌گونه که توسط لیست (-t) چاپ می‌شود، ارائه دهید.

تغییریافته در نسخه 4.3: ورودی‌های بایگانی حاوی توالی‌های پیمایش مسیر (..)، یا مسیرهای مطلق، به دلایل امنیتی رد می‌شوند.

فهرست کردن محتویات بایگانی.

اضافه‌شده در نسخه 3.15: آرگومان <pathname>... می‌تواند برای فهرست کردن صرفاً فایل‌ها یا دایرکتوری‌های انتخاب‌شده استفاده شود.

تولید خروجی پرجزئیات (verbose).
فشرده‌سازی بایگانی حاصل با gzip (Deflate).
فشرده‌سازی بایگانی حاصل با bzip2.
اضافه‌شده در نسخه 3.1.

فشرده‌سازی بایگانی حاصل با XZ (LZMA2).

اضافه‌شده در نسخه 3.15.

فشرده‌سازی بایگانی حاصل با Zstandard.

اضافه‌شده در نسخه 4.3.

آرشیو حاصل را با الگوریتم LZMA فشرده‌سازی می‌کند.

اضافه‌شده در نسخه 3.1.

نام‌های فایل را از فایل داده‌شده می‌خواند، در هر خط یک نام. خطوط خالی نادیده گرفته می‌شوند. خطوط نباید با - شروع شوند، به‌جز --add-file=<name> برای افزودن فایل‌هایی که نام آن‌ها با - شروع می‌شود.

اضافه‌شده در نسخه 3.3.

قالب (فرمت) آرشیو ایجادشونده را مشخص می‌کند. قالب‌های پشتیبانی‌شده عبارتند از:

  • 7zip
  • gnutar
  • pax
  • paxr (pax محدودشده، پیش‌فرض)
  • raw

    اضافه‌شده در نسخه 4.3.

    اگر از این قالب استفاده شود، تنها یک فایل با نوع فشرده‌سازی مشخص‌شده توسط --cmake-tar-compression-method فشرده خواهد شد.

  • zip

اگر روش فشرده‌سازی مشخص نشود، روش فشرده‌سازی به قالب بستگی دارد:

  • 7zip از فشرده‌سازی LZMA استفاده می‌کند
  • zip از فشرده‌سازی Deflate استفاده می‌کند
  • سایر موارد به‌طور پیش‌فرض از هیچ فشرده‌سازی استفاده نمی‌کنند

اضافه‌شده در نسخه 4.3: قالب‌های 7zip و zip از تغییر روش و سطح فشرده‌سازی پیش‌فرض پشتیبانی می‌کنند.

اضافه‌شده در نسخه 3.1.

زمان تغییر ثبت‌شده در مدخل‌های tarball را مشخص می‌کند.

اضافه‌شده در نسخه 4.3.

مقدار <compression-method> باید یکی از موارد زیر باشد:

  • none یا store - هیچ فشرده‌سازی استفاده نمی‌شود
  • deflate یا gzip - مبتنی بر Deflate
  • bzip2 - مبتنی بر BZip2
  • lzma - مبتنی بر LZMA
  • lzma2 یا xz - مبتنی بر LZMA2
  • ppmd - مبتنی بر PPMd

    این روش فشرده‌سازی فقط توسط قالب آرشیو 7zip پشتیبانی می‌شود.

  • zstd - مبتنی بر Zstandard

این دومین حالت برای انتخاب روش فشرده‌سازی است. این گزینه روش‌های فشرده‌سازی بیشتری نسبت به رابط کلاسیک مشابه tar ارائه می‌دهد. می‌توانید از هر یک از آن‌ها استفاده کنید.

مقدار پیش‌فرض به مقدار گزینه --format بستگی دارد و در بخش مربوطه توضیح داده شده است.

اضافه‌شده در نسخه 4.3.

مقدار <compression-level> باید بین 0 و 9 باشد که مقدار پیش‌فرض آن 0 است. هنگامی که گزینه --cmake-tar-compression-level داده می‌شود، الگوریتم فشرده‌سازی باید انتخاب شده باشد.

مقدار <compression-level> برای الگوریتم Zstd را می‌توان بین 0 و 19 تنظیم کرد، به‌جز برای قالب zip.

مقدار 0 برای مشخص کردن سطح فشرده‌سازی پیش‌فرض استفاده می‌شود. این مقدار به‌طور خودکار توسط بک‌اند کتابخانه آرشیو انتخاب می‌شود و مستقیماً توسط خود CMake تنظیم نمی‌گردد. سطح فشرده‌سازی پیش‌فرض ممکن است بین قالب‌های آرشیو، پلتفرم‌ها و غیره متفاوت باشد.

اضافه‌شده در نسخه 4.4.

رمزگذاری (کدگذاری) نویسه‌های مسیر فایل استفاده‌شده در آرشیو را مشخص می‌کند.

مقدار <encoding> می‌تواند یکی از موارد زیر باشد:

مسیرهای آرشیو با کدگذاری UTF-8 رمزگذاری می‌شوند.

این مقدار از CMake 4.4 به بعد پیش‌فرض است.

در پلتفرم‌های ویندوز، مسیرها با استفاده از صفحه کد سازنده اصلی تجهیزات (OEM) رمزگذاری می‌شوند. در پلتفرم‌های غیرویندوزی، مسیرها طبق لوکال (locale) فعلی رمزگذاری می‌شوند.

در CMake 4.3 و نسخه‌های پیشین، رمزگذاری OEM (لوکال فعلی) همیشه استفاده می‌شد.

مسیرهای آرشیو به‌صورت UTF-16 little-endian یا big-endian رمزگذاری می‌شوند.
...
هر نام رمزگذاری که توسط iconv روی پلتفرم فعلی پشتیبانی شود. در ویندوز، می‌توان نام‌های صفحه کد را مشخص کرد.

نکته:

آرشیوهای 7zip همیشه مسیرها را با UTF-16LE رمزگذاری می‌کنند، بنابراین این گزینه برای آن قالب بدون هشدار نادیده گرفته می‌شود.
اضافه‌شده در نسخه 4.3.

از <number> نخ (thread) برای انجام عملیات روی آرشیو استفاده می‌کند. در حال حاضر فقط فشرده‌سازی چندنخی پشتیبانی می‌شود.

اگر روی 0 تنظیم شود، تعداد هسته‌های موجود روی ماشین به‌جای آن استفاده خواهد شد. توجه داشته باشید که تمام حالت‌های فشرده‌سازی از چندنخی در همه محیط‌ها پشتیبانی نمی‌کنند.

اضافه‌شده در نسخه 3.24.

به‌جای استخراج برچسب‌های زمانی فایل از آرشیو، از برچسب زمانی محلی فعلی استفاده می‌کند.

--
اضافه‌شده در نسخه 3.1.

تفسیر گزینه‌ها را متوقف کرده و با تمام آرگومان‌های باقیمانده به عنوان نام فایل رفتار می‌کند، حتی اگر با - شروع شوند.

اضافه‌شده در نسخه 3.1: پشتیبانی از LZMA (7zip).

اضافه‌شده در نسخه 3.15: دستور اکنون به افزودن فایل‌ها به یک آرشیو ادامه می‌دهد حتی اگر برخی از فایل‌ها قابل خواندن نباشند. این رفتار با ابزار کلاسیک tar سازگارتر است. این دستور اکنون تمام پرچم‌ها را نیز تجزیه می‌کند، و اگر پرچم نامعتبری ارائه شده باشد، یک هشدار صادر می‌شود.

دستور <command> را اجرا کرده و زمان سپری‌شده را نمایش می‌دهد (شامل سربار فرانت‌اند CMake).

اضافه‌شده در نسخه 3.5: این دستور اکنون آرگومان‌های حاوی فاصله یا نویسه‌های خاص را به‌درستی به فرایند فرزند منتقل می‌کند. این تغییر ممکن است اسکریپت‌هایی را که با نقل‌قول یا گریز دادن اضافی این باگ را دور می‌زدند، دچار شکست کند.

touch <file>...
در صورتی که فایل وجود نداشته باشد <file> را ایجاد می‌کند. اگر <file> وجود داشته باشد، زمان‌های دسترسی و تغییر <file> را تغییر می‌دهد.
در صورت وجود فایل، زمان‌های آن را به‌روزرسانی می‌کند اما آن را ایجاد نمی‌کند. اگر فایلی وجود نداشته باشد، بدون هیچ پیامی نادیده گرفته خواهد شد.
اضافه‌شده در نسخه 3.16.

هیچ کاری انجام نمی‌دهد، با کد خروج 0.

دستورات cmake -E زیر تنها در ویندوز در دسترس هستند:

مقدار رجیستری ویندوز را حذف می‌کند.
اضافه‌شده در نسخه 3.2.

یک فایل دسته‌ای (batch file) را نمایش می‌دهد که محیط را برای SDK ارائه‌شده Windows CE نصب‌شده در VS2005 تنظیم می‌کند.

اضافه‌شده در نسخه 3.2.

یک فایل دسته‌ای (batch file) را نمایش می‌دهد که محیط را برای SDK ارائه‌شده Windows CE نصب‌شده در VS2008 تنظیم می‌کند.

مقدار رجیستری ویندوز را می‌نویسد.

برنامه CMake یک ابزار کمکی مشابه pkg-config را برای پروژه‌های مبتنی بر Makefile ارائه می‌دهد:

cmake --find-package [<options>]

نکته:

این حالت به دلیل برخی محدودیت‌های فنی به خوبی پشتیبانی نمی‌شود. این ویژگی صرفاً برای سازگاری با نسخه‌های پیشین حفظ شده است و نباید در پروژه‌های جدید استفاده شود.
یک بسته را با استفاده از دستور find_package() <#command:find_package> جستجو می‌کند و فلگ‌های حاصل را در stdout چاپ می‌نماید. این گزینه می‌تواند به‌جای pkg-config برای یافتن کتابخانه‌های نصب‌شده در پروژه‌های ساده مبتنی بر Makefile یا در پروژه‌های مبتنی بر Autoconf، با استفاده از ماکروهای کمکی نصب‌شده در share/aclocal/cmake.m4 بر روی سیستم استفاده شود.

هنگام استفاده از این گزینه، متغیرهای زیر مورد انتظار هستند:

نام بسته، همان‌گونه که در find_package(<PackageName>) فراخوانی می‌شود.
شناسه کامپایلر (Compiler ID <#variable:CMAKE_<LANG>_COMPILER_ID>) مورد استفاده برای جستجوی بسته، به عنوان مثال GNU/Intel/Clang/MSVC و غیره.
زبان مورد استفاده برای جستجوی بسته، به عنوان مثال C/CXX/Fortran/ASM و غیره.
حالت جستجوی بسته. مقدار می‌تواند یکی از موارد زیر باشد:
تنها وجود بسته داده‌شده را بررسی می‌کند.
فلگ‌های مورد نیاز برای کامپایل یک فایل شیء (object file) که از بسته داده‌شده استفاده می‌کند را چاپ می‌نماید.
فلگ‌های مورد نیاز برای پیونددهی (linking) هنگام استفاده از بسته داده‌شده را چاپ می‌کند.
(اختیاری) اگر TRUE باشد، پیام نتیجه جستجو چاپ نمی‌شود.

برای مثال:

cmake --find-package -DNAME=CURL -DCOMPILER_ID=GNU -DLANGUAGE=C -DMODE=LINK

افزوده‌شده در نسخه 3.25.

قابلیت CMake Presets <#manual:cmake-presets(7)> روشی را برای اجرای چندین مرحله ساخت به ترتیب مشخص فراهم می‌کند:

cmake --workflow <options>

گزینه‌ها عبارتند از:

انتخاب یک پیش‌تنظیم گردش کار (Workflow Preset <#workflow-preset>) با استفاده از یکی از گزینه‌های زیر.
استفاده از یک پیش‌تنظیم (preset <#manual:cmake-presets(7)>) گردش کار برای تعیین یک گردش کار. دایرکتوری باینری پروژه از پیش‌تنظیم اولیه پیکربندی استنباط می‌شود.

تغییریافته در نسخه 3.31: هنگامی که بلافاصله پس از گزینه --workflow بیاید، آرگومان --preset می‌تواند حذف شود و تنها نام <preset> داده شود. این بدان معناست که نحو دستوری زیر معتبر است:

$ cmake --workflow my-preset

تغییریافته در نسخه 4.4: اگر --presets-file مشخص شده باشد، حضور هیچ‌یک از فایل‌های CMakePresets.json و CMakeUserPresets.json الزامی نیست. در غیر این صورت، حضور آن‌ها در بالاترین سطح دایرکتوری سورس الزامی است. در نسخه‌های پیشین، این مورد به صورت اکید الزامی بود.

افزوده‌شده در نسخه 4.4.

پیش‌تنظیم‌ها (presets <#manual:cmake-presets(7)>) را از <file> داده‌شده می‌خواند. مسیر مشخص‌شده می‌تواند مطلق یا نسبت به دایرکتوری کاری جاری باشد. اگر --presets-file مشخص شود، پیش‌تنظیم‌های تعریف‌شده در CMakePresets.json و CMakeUserPresets.json نادیده گرفته خواهند شد.

پیش‌تنظیم‌های گردش کار موجود را فهرست می‌کند.

تغییریافته در نسخه 4.4: اگر --presets-file مشخص شده باشد، حضور هیچ‌یک از فایل‌های CMakePresets.json و CMakeUserPresets.json الزامی نیست و تنها پیش‌تنظیم‌های تعریف‌شده در <file> مشخص‌شده فهرست می‌شوند. در غیر این صورت، حضور آن‌ها در بالاترین سطح دایرکتوری سورس الزامی است. در نسخه‌های پیشین، این موضوع به صورت اکید الزامی بود.

انجام یک پیکربندی تازه از درخت ساخت، که اثری مشابه با cmake --fresh دارد.

برای چاپ صفحات منتخب از مستندات CMake، از دستور:

cmake --help[-<topic>]

به همراه یکی از گزینه‌های زیر استفاده کنید:

بنر نام و نسخه برنامه را نمایش داده و خارج می‌شود. اگر json-v1 مشخص شده باشد، اطلاعات تفصیلی نسخه را در قالب JSON چاپ می‌کند. خروجی JSON حاوی نسخه‌های CMake و وابستگی‌های آن است. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

قالب خروجی JSON به شکل خوانا برای ماشین در this JSON schema توصیف شده است.

اطلاعات نحوه استفاده را چاپ کرده و خارج می‌شود.

نحوه استفاده، رابط خط فرمان پایه و گزینه‌های آن را شرح می‌دهد.

راهنما را برای یک کلیدواژه CMake چاپ می‌کند.

کلیدواژه <keyword> می‌تواند یک ویژگی (property)، متغیر، دستور، خط‌مشی (policy)، تولیدکننده (generator) یا ماژول باشد.

مدخل مربوطه در کتابچه راهنما برای <keyword> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

تغییریافته در نسخه 3.28: پیش از CMake 3.28، این گزینه تنها از نام دستورات پشتیبانی می‌کرد.

تمام کتابچه‌های راهنما را چاپ کرده و خارج می‌شود.

تمام کتابچه‌های راهنما در یک قالب متنی خوانا برای انسان چاپ می‌شوند. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

یک کتابچه راهنما را چاپ کرده و خارج می‌شود.

کتابچه راهنمای مشخص‌شده در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه‌های راهنمای موجود را فهرست کرده و خارج می‌شود.

این فهرست شامل تمام کتابچه‌های راهنمایی است که می‌توان با استفاده از گزینه --help-manual همراه با نام کتابچه به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

راهنما را برای یک دستور چاپ کرده و خارج می‌شود.

مدخل کتابچه راهنمای cmake-commands(7) <#manual:cmake-commands(7)> برای <cmd> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

دستوراتی را که راهنمای آن‌ها موجود است فهرست کرده و خارج می‌شود.

این فهرست شامل تمام دستوراتی است که می‌توان با استفاده از گزینه --help-command همراه با نام دستور به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه راهنمای cmake-commands را چاپ کرده و خارج می‌شود.

کتابچه راهنمای cmake-commands(7) <#manual:cmake-commands(7)> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

راهنما را برای یک ماژول چاپ کرده و خارج می‌شود.

مدخل کتابچه راهنمای cmake-modules(7) <#manual:cmake-modules(7)> برای <mod> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

ماژول‌هایی را که راهنمای آن‌ها موجود است فهرست کرده و خارج می‌شود.

این فهرست شامل تمام ماژول‌هایی است که می‌توان با استفاده از گزینه --help-module همراه با نام ماژول به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه راهنمای cmake-modules را چاپ کرده و خارج می‌شود.

کتابچه راهنمای cmake-modules(7) <#manual:cmake-modules(7)> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

راهنما را برای یک خط‌مشی چاپ کرده و خارج می‌شود.

مدخل کتابچه راهنمای cmake-policies(7) <#manual:cmake-policies(7)> برای <cmp> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

خط‌مشی‌هایی را که راهنمای آن‌ها موجود است فهرست کرده و خارج می‌شود.

این فهرست شامل تمام خط‌مشی‌هایی است که می‌توان با استفاده از گزینه --help-policy همراه با نام خط‌مشی به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه راهنمای cmake-policies را چاپ کرده و خارج می‌شود.

کتابچه راهنمای cmake-policies(7) <#manual:cmake-policies(7)> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

راهنما را برای یک ویژگی چاپ کرده و خارج می‌شود.

مدخل‌های کتابچه راهنمای cmake-properties(7) <#manual:cmake-properties(7)> برای <prop> در یک قالب متنی خوانا برای انسان چاپ می‌شوند. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

ویژگی‌هایی را که راهنمای آن‌ها موجود است فهرست کرده و خارج می‌شود.

این فهرست شامل تمام ویژگی‌هایی است که می‌توان با استفاده از گزینه --help-property همراه با نام ویژگی به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه راهنمای cmake-properties را چاپ کرده و خارج می‌شود.

کتابچه راهنمای cmake-properties(7) <#manual:cmake-properties(7)> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

راهنما را برای یک متغیر چاپ کرده و خارج می‌شود.

مدخل کتابچه راهنمای cmake-variables(7) <#manual:cmake-variables(7)> برای <var> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

متغیرهایی را که راهنمای آن‌ها موجود است فهرست کرده و خارج می‌شود.

این فهرست شامل تمام متغیرهایی است که می‌توان با استفاده از گزینه --help-variable همراه با نام متغیر به راهنمای آن‌ها دست یافت. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

کتابچه راهنمای cmake-variables را چاپ کرده و خارج می‌شود.

کتابچه راهنمای cmake-variables(7) <#manual:cmake-variables(7)> در یک قالب متنی خوانا برای انسان چاپ می‌شود. در صورت ارائه نام <file>، خروجی در آن نوشته می‌شود.

برای مشاهده پیش‌تنظیم‌های موجود برای یک پروژه، از دستور زیر استفاده کنید:

cmake <source-dir> --list-presets

در صورت خاتمه عادی، فایل اجرایی cmake کد خروج 0 را بازمی‌گرداند.

اگر خاتمه بر اثر دستور message(FATAL_ERROR) <#command:message>، یا شرایط خطای دیگری رخ داده باشد، یک کد خروج غیرصفر بازگردانده می‌شود.

منابع زیر برای دریافت راهنما در استفاده از CMake در دسترس هستند:

https://cmake.org

نقطه شروع اصلی برای یادگیری درباره CMake.

https://cmake.org/documentation

پیوندهای مربوط به مستندات موجود و منابع انجمن را می‌توان در این صفحه وب یافت.

https://discourse.cmake.org

تالار گفتگوی Discourse میزبان گفتگوها و پرسش‌ها پیرامون CMake است.

2000-2026 Kitware, Inc. and Contributors

August 31, 2026 4.4.3