Как мне перехватить командную строку cl.exe в Visual Studio 2010?

0

У меня есть проект, который я конвертировал из make файла, у которого есть исходный файл, который ожидает параметры командной строки от компилятора. Например, когда проект был построен с помощью gcc, если вы выполняли program --help он выплевывал бы командную строку gcc, используемую для компиляции программы.

Как я могу сделать то же самое в Visual Studio, чтобы он выплевывал командную строку cl, используемую для компиляции программы? В основном я хочу поразить F7 (построить решение) и автоматизировать все это. Я не могу найти макрос для него. благодаря

редактировать; Я имею в виду программно, так, например, я хочу, когда я запускаю программу для ее вывода, чтобы содержать используемую командную строку cl.exe. Вы можете увидеть командную строку в Configuration Properties > C/C++ > Command Line > All Options но я не могу найти для нее макрос или каким-либо способом инкапсулировать его в файл.

  • 0
    Что это за параметры строки cmd? Многие параметры вы можете изменить из диалогового окна свойств
  • 0
    Я не знаю, будет ли это работать в Windows (или Linux в этом отношении), но не могли бы вы передать файл в исполняемый файл при запуске?
Показать ещё 2 комментария
Теги:
msbuild
visual-studio-2010
msbuild-4.0

2 ответа

0

Проект.vcxproj - это проект Visual Studio в формате проекта MSBuild. Вы можете создать его, запустив msbuild.exe, devenv.exe, devenv.com, используя графический интерфейс Visual Studio или API MSBuild.

GUI Visual Studio использует API MSBuild. При этом он ограничивает вывод MSBuild. Если вы хотите получить более подробную информацию, измените свои пользовательские настройки в Visual Studio:

Инструменты> Параметры> Проект и решения> Сборка и запуск> два параметра многословия

Подробно отобразятся командные строки cl.exe.

  • 0
    Ты уверен? У меня больше нет VS2010, но в VS2012 при многословной диагностике он показывает TaskParameters для задачи CL, но не командную строку cl.exe - более того, до получения командной строки во время копирования в исходном файле еще далеко ,
  • 2
    @stijn Да. Cl.exe и link.exe вызываются через Tracker.exe. Но вы не получаете даже половины пути для включения этой информации в программу. Захватить его в файл soure и повторять сборку до тех пор, пока он не изменится, будет одним из способов.
Показать ещё 1 комментарий
0

Поскольку VS переключил базовую систему сборки на MsBuild, командная строка, как показано в этом диалоговом окне, создается программно только в пределах VS. Это может быть даже не точная командная строка, переданная cl: сама MsBuild вызывает CL через задачу, и поэтому нет прямой ссылки на то, что показано в VS, и нет способа получить из нее командную строку.

Во всяком случае, нет такой вещи, как командная строка, поскольку каждый исходный файл может иметь разные параметры. Кроме того, я сомневаюсь, что вам нужна полная командная строка, включая абсолютные пути включения и т.д. Никто этого не интересует. Теперь, если вы сделаете умное использование макросов с http://msdn.microsoft.com/en-us/library/b0084kay.aspx, вы можете сортировать воссоздание командной строки самостоятельно, так как большинство параметров есть:

std::string CompilerCommandLineOptions()
{
  std::string cmd;
  #ifdef _CHAR_UNSIGNED
  cmd += " /J";
  #endif
  #ifdef __cplusplus_cli
  cmd += " /clr";
  #endif
  #ifdef _CPPRTTI
  cmd += " /GR"
  #endif
  //etc
  return cmd;
}

Примечание: вы уверены, что это стоит хлопот? Действительно ли кто-то заинтересован в командной строке? Этого даже не достаточно для создания проекта. Почему бы и не использовать компоновщик?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню