Мне нужно пропустить что-то действительно очевидное, но по какой-то причине версия командной строки компилятора Microsoft С++ (cl.exe) не поддерживает отчетность только своей версии при запуске. Нам нужно это, чтобы написать make файлы, которые проверяют версию компилятора, которую установил пользователь нашего инструмента (они получают make файлы с кодом, который они должны компилировать локально, поэтому мы не контролируем их версию компилятора).
В gcc вы просто передадите опцию -v или --version, чтобы получить красивую строку с версией.
В cl.exe вы получите сообщение об ошибке -v.
Я прочитал интерактивную справку MSDN docs и компилятора, и я не могу найти переключатель, чтобы просто распечатать версию компилятора. Раздражающе, вы всегда получаете версию, когда компилятор запускается... но вы, похоже, не можете запустить компилятор, чтобы получить версию.
Поиск поставщика/версии компилятора с использованием qmake показался похожим, но касается только простого случая gcc.
Я пробую это с VС++ Express 2005, если это имеет значение. Я надеялся, что этого не произойдет, так как обнаружение версии компилятора лучше всего сделать не зависящим от компилятора способом:
Обновление после ответов:
- Запуск cl.exe без каких-либо аргументов печатает свою версию и некоторую помощь текст.
- Это выглядит как наиболее портативный способ получить версию, версии vc.
- Затем вы должны проанализировать многострочный вывод, но не слишком сложно.
- Мы сделали это в конец, и он работает.