Получение точного вызова cl.exe при создании проекта или решения Visual Studio

При создании проекта или решения визуальной студии, как я могу получить фактический вызов cl.exe, который будет выполнен? Например, я хотел бы увидеть что-то вроде

cl.exe /c /I"C:\Path\to\Include" /Fo"Release\main.obj" /EHsc main.cpp

Я хотел бы знать точные аргументы, которые передаются в cl.exe, но я не вижу их в окне вывода, независимо от многословности.

Я только что протестировал проект на C++, и командная строка отображается с подробной информацией (-v:d).

Jonathan Dodds 05.07.2024 00:56

В VS 2022 я создал новый консольный проект C++, установил для параметра «Детализация вывода» значение «Подробно», запустил «Очистить» и «Построить». Вывод для Target ClCompile включает C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\bin\HostX64\‌​x64\CL.exe /c /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"CppConso.d37a0e87\x64\Debug\\" /Fd"CppConso.d37a0e87\x64\Debug\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt CppConsoleApplication1.cpp

Jonathan Dodds 05.07.2024 02:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Когда мне нужно было увидеть точные параметры, передаваемые в подпрограмму, вызываемую IDE, я сделал это так: я создал простую прокладку exe-файла, которая отображает всю его командную строку в stderr, и очень осторожно временно заменил ее исходным cl. Exe. Оказывается, в компиляторе Intel можно просто добавить «-v» в командную строку. Но с MS не повезло. Я описала свой метод в этом вопросе , но лучшего ответа не получила.

Ответ принят как подходящий

Мне не удалось воспроизвести проблему в Visual Studio 2022 с MSVC v143.

В Visual Studio 2022 я создал новый проект консольного приложения C++ с помощью шаблона.

Следующие шаги:

  1. Постройте решение так, чтобы в окне «Вывод» отображались выходные данные «Построить».
  2. Установите для параметра Подробность вывода значение «Подробно».
  3. Запустите «Чистое решение», а затем «Построить решение» (или «Перестроить решение», но результат будет длиннее).
  4. В окне вывода найдите «ClCompile» как целое слово. (ClCompile — это имя цели в MSBuild.)

У меня есть следующий вывод, где первая строка для Target ClCompile — это командная строка компилятора:

1>Target ClCompile:
1>  C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\bin\HostX64\x64\CL.exe /c /ZI /JMC /nologo /W3 /WX- /diagnostics:column /sdl /Od /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"CppConso.d37a0e87\x64\Debug\\" /Fd"CppConso.d37a0e87\x64\Debug\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt CppConsoleApplication1.cpp
1>  CppConsoleApplication1.cpp

спасибо, это сработало! Знаете ли вы, есть ли способ поиска в окне вывода? ctrl+f похоже не работает

roi_saumon 08.07.2024 11:19

Щелкните окно вывода, чтобы убедиться, что оно находится в фокусе, затем используйте Ctrl+f.

Jonathan Dodds 08.07.2024 13:14

окей, у меня это не работало, пока я не сделал Инструменты -> Параметры -> Среда -> Клавиатура -> Сброс

roi_saumon 08.07.2024 16:18

Меню «Правка -> Найти и заменить -> Быстрый поиск» должно работать, даже если привязка сочетания клавиш не является глобальной.

Jonathan Dodds 09.07.2024 01:27

но я не вижу этого в окне вывода, независимо от многословия.

Отсюда вы установили уровень детализации вывода сборки на Diagnostic?

Инструменты меню → Параметры → Проекты и решения → Сборка и запуск → Подробность выходных данных сборки проекта MSBuild: Диагностика

Если да, но все еще не видите его, попробуйте установить этот параметр компилятора: Suppress Startup Banner. 1.Откройте диалоговое окно «Страницы свойств» проекта.

2.Выберите страницу свойств конфигурации > C/C++ > Общие.

3. Измените свойство «Подавить баннер запуска» на No.

Судя по моему тесту, в окне вывода будут показаны командные строки cl.

Документы указаны:

https://learn.microsoft.com/en-us/cpp/build/reference/nologo-suppress-startup-banner-c-cpp?view=msvc-170

Надеюсь, это поможет вам.

Другие вопросы по теме