CL — задача
Создает программу-оболочку для компилятора Microsoft C++ cl.exe. Компилятор создает исполняемые файлы (EXE-файлы), библиотеки динамической компоновки (DLL-файлы) или модули кода (NETMODULE-файлы). Дополнительные сведения см. в разделах Параметры компилятора, Использование MSBuild из командной строки и Использование набора инструментов Microsoft C++ из командной строки.
Параметры
В следующем списке приводятся параметры задачи CL. Большинство параметров задачи и некоторые наборы параметров соответствуют параметрам командной строки.
- AdditionalIncludeDirectories Необязательный параметр типа String[]. Добавляет каталог к списку каталогов, в которых выполняется поиск включаемых файлов. Дополнительные сведения см. в разделе /I (дополнительные каталоги включения).
- AdditionalOptions Необязательный параметр String. Список параметров командной строки. Например, / / /. Этот параметр используется для указания параметров командной строки, не представленных каким-либо другим параметром задачи. Дополнительные сведения см. в разделе Параметры компилятора.
- AdditionalUsingDirectories Необязательный параметр типа String[]. Указывает каталог, в котором компилятор будет производить поиск для разрешения ссылок, переданных в директиву #using. Дополнительные сведения см. в разделе /AI (указание каталогов метаданных).
- AlwaysAppend Необязательный параметр String. Строка, которая всегда выводится в командной строке. Значение по умолчанию — «/c«.
- AssemblerListingLocation Создает файл листинга, содержащий код сборки. Дополнительные сведения см. в описании параметра /Fa в разделе /FA, /Fa (файл листинга).
- AssemblerOutput Необязательный параметр String. Создает файл листинга, содержащий код сборки. Укажите одно из следующих значений, каждое из которых соответствует параметру командной строки.
- NoListing —
- AssemblyCode — /FA
- AssemblyAndMachineCode — /FAc
- AssemblyAndSourceCode — /FAs
- All — /FAcs Дополнительные сведения см. в описании параметров /FA, /FAc, /FAs и /FAcs в разделе /FA, /Fa (файл листинга).
- Default —
- StackFrameRuntimeCheck — /RTCs
- UninitializedLocalUsageCheck — /RTCu
- EnableFastChecks — /RTC1 Дополнительные сведения см. в разделе /RTC (проверки ошибок во время выполнения).
- Cdecl — /Gd
- FastCall — /Gr
- StdCall — /Gz Дополнительные сведения см. в разделе /Gd, /Gr, /Gv, /Gz (соглашение о вызовах).
- Default —
- CompileAsC — /TC
- CompileAsCpp — /TP
- КомпиляцияAsCppModule — /interface
- КомпиляцияAsCppModuleInternalPartition/internalPartition —
- КомпиляцияAsHeaderUnit — /exportHeader Дополнительные сведения см. в разделе /Tc, /Tp, /TC, /TP (указание типа исходного файла), /interface (рассматривать входной файл как единицу интерфейса модуля),/internalPartition (рассматривать входной файл как внутреннюю единицу секции) и /exportHeader (Создание единиц заголовков).
- false —
- true — /clr
- Pure — /clr:pure
- Safe — /clr:safe
- OldSyntax — /clr:oldSyntax Дополнительные сведения см. в разделе /clr (компиляция CLR).
- OldStyle — /Z7
- ProgramDatabase — /Zi
- EditAndContinue — /ZI Дополнительные сведения см. в разделе /Z7, /Zi, /ZI (формат отладочной информации).
- StreamingSIMDExtensions — /arch:SSE
- StreamingSIMDExtensions2 — /arch:SSE2 Дополнительные сведения см. в разделе /arch (x86).
- None — /errorReport:none
- Prompt — /errorReport:prompt
- Queue — /errorReport:queue
- Send — /errorReport:send Дополнительные сведения см. в разделе /errorReport (отчет о внутренних ошибках компилятора).
- false —
- Async — /EHa
- Sync — /EHsc
- SyncCThrow — /EHs Дополнительные сведения см. в статье /EH (модель обработки исключений).
- Neither —
- Size — /Os
- Speed — /Ot Дополнительные сведения см. в разделе /Os, /Ot (приоритет размера кода или скорости кода).
- Precise — /fp:precise
- Strict — /fp:strict
- Fast — /fp:fast Дополнительные сведения см. в разделе /fp (определение поведения с плавающей запятой).
- Default —
- Disabled — /Ob0
- OnlyExplicitInline — /Ob1
- AnySuitable — /Ob2 Дополнительные сведения см. в разделе /Ob (расширение встраиваемых функций).
- Disabled — /Od
- MinSpace — /O1
- MaxSpeed — /O2
- Full — /Ox Дополнительные сведения см. в разделе /O (оптимизация кода).
- NotUsing —
- Create — /Yc
- Use — /Yu Дополнительные сведения см. в разделах /Yc (создание файла предкомпилированного заголовка) и /Yu (использование файла предкомпилированного заголовка). Кроме того, см. параметры PrecompiledHeaderFile и PrecompiledHeaderOutputFile в этой таблице.
- MultiThreaded — /MT
- MultiThreadedDebug — /MTd
- MultiThreadedDLL — /MD
- MultiThreadedDebugDLL — /MDd Дополнительные сведения см. в разделе /MD, /MT, /LD (использование библиотеки времени выполнения).
- Default — /Zp1
- 1Byte — /Zp1
- 2Bytes — /Zp2
- 4Bytes — /Zp4
- 8Bytes — /Zp8
- 16Bytes — /Zp16 Дополнительные сведения см. в статье /Zp (выравнивание членов структур).
- TurnOffAllWarnings — /W0
- Level1 — /W1
- Level2 — /W2
- Level3 — /W3
- Level4 — /W4
- EnableAllWarnings — /Wall Дополнительные сведения см. в описании параметра /Wn в разделе /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (порог предупреждений).
См. также
Параметры компилятора
cl.exe — это средство, которое управляет компиляторами и компоновщиком Microsoft C++ (MSVC) C и C++. cl.exe можно запускать только в операционных системах, поддерживающих Microsoft Visual Studio для Windows.
Это средство можно запустить только из командной строки разработчика Visual Studio. В системной командной строке или проводнике это невозможно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки.
Компиляторы создают файлы объектов COFF (OBJ). Компоновщик создает исполняемые (.exe) файлы или библиотеки динамической компоновки (DLL).
Все параметры компилятора чувствительны к регистру. Для указания параметра компилятора можно использовать косую черту ( / ) или тире ( — ).
Для компиляции без связывания используйте параметр /c .
Поиск параметра компилятора
Чтобы найти конкретный параметр компилятора, см. один из следующих списков:
- Параметры компилятора, перечисленные в алфавитном порядке
- Параметры компилятора, перечисленные по категориям
Указание параметров компилятора
В разделе для каждого параметра компилятора описывается, как его можно задать в среде разработки. Сведения об указании параметров за пределами среды разработки см. в следующих разделах:
- Синтаксис командной строки компилятора MSVC
- Командные файлы CL
- Переменные среды CL
Связанные средства сборки
Параметры компоновщика MSVC также влияют на сборку программы.
Командные файлы компилятора CL
Командный файл — это текстовый файл, содержащий параметры компилятора и имена файлов. Он предоставляет параметры, которые в противном случае можно было бы ввести в командной строке или указать с помощью переменной среды CL. CL принимает командный файл компилятора в качестве аргумента либо в переменной среды CL, либо в командной строке. В отличие от командной строки или переменной среды CL, в командном файле можно использовать несколько строк параметров и имен файлов.
Параметры и имена файлов в командном файле обрабатываются, когда имя файла команды отображается в переменной среды CL или в командной строке. Однако если /link параметр отображается в командном файле, все параметры в остальной части строки передаются компоновщику. Параметры в последующих строках командного файла и параметры командной строки после вызова командного файла по-прежнему принимаются в качестве параметров компилятора. Дополнительные сведения о том, как порядок параметров влияет на их интерпретацию, см. в разделе Order of CL Options.
Командный файл не должен содержать команду CL. Каждый параметр должен начинаться и заканчиваться в одной строке; Обратную косую черту ( \ ) нельзя использовать для объединения параметра в двух строках.
Командный файл указывается знаком at ( @ ), за которым следует имя файла. Имя файла может указывать абсолютный или относительный путь.
Например, если следующая команда находится в файле с именем RESP:
/Ot /link LIBC.LIB
и укажите следующую команду CL:
CL /Ob2 @RESP MYAPP.C
Команда cl выглядит следующим образом:
CL /Ob2 /Ot MYAPP.C /link LIBC.LIB
Здесь вы можете увидеть, как командная строка и команды командного файла эффективно объединяются.
При подготовке материала использовались источники:
https://learn.microsoft.com/ru-ru/visualstudio/msbuild/cl-task?view=vs-2022
https://learn.microsoft.com/ru-ru/cpp/build/reference/compiler-options?view=msvc-170
https://learn.microsoft.com/ru-ru/cpp/build/reference/cl-command-files?view=msvc-170