Я пытаясь получить входные данные компилятора (и компоновщика), равные (насколько это возможно) входным данным, которые я имел бы при использовании Visual Studio 6. Поэтому я сравниваю файл журнала сборки проекта VS2010 с файлом журнала сборки тот же проект в VS6.
Я заметил, что при сборке в VS2010 переключатели компилятора, передаваемые в сгенерированной командной строке, отличаются. Некоторые из этих различий я могу исправить в настройках файла проекта в VS2010, но другие я не могу найти: например, переключатели /FD и /TP присутствуют при сборке с VS6, но отсутствуют при сборке с помощью VS6. сборка с VS2010, и я не могу найти эти переключатели нигде в настройках проекта в IDE. и еще другие различия, которые я не могу устранить, потому что не могу найти переключатели по умолчанию для VS6 (да, я пробовал Google): например, переключатель /EHsc присутствует при сборке с VS2010, но отсутствует при сборке с VS6, это разница или это значение по умолчанию для компилятора VS6?
Поэтому мой вопрос:
- Есть ли список настроек по умолчанию для компилятора VS6?
- И для устранения неполадок: как мне увидеть, какие переключатели вводятся или отвергаются IDE или Daffodil?
* переключатели компилятора, которые, как я заметил, присутствуют в VS6, но отсутствуют в VS2010: /FD
* переключатели компилятора, которые я заметил замечено отсутствие в VS6, но присутствует в VS2010: /EHsc /Gd /TP /WX- /O2 /Oy-
Я знаю, что большую часть этого можно исправить в настройках проекта, но я все равно решил добавить полный список для этого проекта, надеясь, что кто-нибудь сможет пролить больше света на особенно проблемные переключатели компилятора, требующие согласования.
ОБНОВЛЕНИЕ: Хорошо, вот что я нашел и решил:
- < li>Переключатель /WX- (рассматривать предупреждения как ошибки), вероятно, безвреден, если предположить, что он является отрицанием переключателя, который в любом случае отсутствовал изначально, похоже, не имеет никакого эффекта, я подозреваю, что он введен Daffodil < /li>
- Переключатель /O2 (в пользу быстрого кода) подразумевает несколько других переключателей оптимизации и является серьезной ошибкой, устраненной путем очистки настройки оптимизации в проекте. установка
- Переключатель /Oy- (опустить указатель кадра) также, вероятно, безвреден, если предположить, что это отрицание переключателя, который все равно отсутствовал изначально, похоже, не имеет любой эффект, я подозреваю, что он был введен Daffodil
- Существовал переключатель /D _VC80_UPGRADE=0x0600, который был внедрен IDE, но он не имеет смысла для компилятора VS6, поэтому он безвреден < /li>
Переключатель /EHsc (синхронная обработка исключений), по всей видимости, аналогичен переключателю /GX, который уже присутствовал изначально, так что, похоже, все в порядке
Переключатель /Gd (соглашение о вызовах cdecl по умолчанию), по-видимому, используется по умолчанию для компилятора VS6, поэтому его присутствие безвредно. Я подозреваю, что он введен либо Daffodil, либо IDE. - Переключатель /TP (рассматривать все файлы как исходные файлы C++). Я нигде не могу найти, как это настроить, но со смешанными источниками это потенциально опасно, я не знаю как избавиться от этого переключателя, он вводится либо Daffodil, либо IDE
- Переключатель /stack (зарезервированный размер стека) имеет шестнадцатеричное значение в VS6, но десятичное и заключено в кавычки в VS2010, поэтому мне пришлось указать их в командной строке, но...
- Переключатели /machine:I386 и /mapinfo:lines не являются известны в VS2010, поэтому мне пришлось указать их в командной строке. они добавляются в самый конец командной строки компоновщика после списка файлов, что легко не заметить, и я не уверен на 100%, что компоновщик действительно подбирает дополнительные переключатели после списка файлов..
Подробнее здесь: https://stackoverflow.com/questions/126 ... gacy-build