Member 11072126 Ответов: 1

Зачем устанавливать переменные среды для проекта VC++


Всем Привет,

Мне был назначен проект VC++, и это мой первый раз, когда я работаю над проектом VC++.
Проект был ранее построен на visual Studio 2015, и я вижу, что событие после сборки упоминается в свойствах проекта, где он вызывает пакетный файл-"vsvars32.bat".

Я использую Visual Studio 2017 и изменил имя файла на - "vsdevcmd.bat".

Я проводил кое-какие исследования, и мне в голову пришли некоторые вопросы. Я кое-что понял, а также нашел еще несколько тем, связанных с этим, которые я упомянул в разделе "Что вы пробовали". Я до сих пор гуглю, чтобы найти ответы, но до сих пор не мог их найти. Может быть, я смогу получить хорошее объяснение здесь.

1. Почему этот пакетный файл должен быть выполнен?
2. Могу ли я вызвать этот пакетный файл также для любых других проектов на языке C#/других языках?
3. Если я не вызову этот пакетный файл для текущего проекта VC++, то каковы могут быть последствия?

Что я уже пробовал:

По мере того как вопросы приходили мне в голову, я начал находить ответы и пришел к выводу, что все это является частью "MSBUild".

В основном, файл "vsdevcmd.bat" используется для настройки переменных окружения.
Кроме того, я узнал, что мы можем создавать проекты Visual Studio с помощью "MSBuild", и у него есть свойство под названием "набор инструментов платформы", где мы можем указать, для какой платформы я пытаюсь построить приложение, и это может быть для проектов драйверов и не драйверов.

И вот снова мне в голову пришло множество вопросов:

1. какова связь между набором инструментов платформы и переменной среды?
2. является ли эта переменная окружения специально для приложений Visual Studio или всей системы (как мы устанавливаем после установки многих программ, например Java SDK)?
3. я работал над проектами C#, но никогда не настраивал эти переменные среды с помощью этого пакетного файла. Итак, требуется ли это для любого проекта VC++?
4. я уже пишу код в Visual Studio и строю приложение с помощью VS Build, так что это означает, что оно управляется CLR, и поэтому мне нужно указать все эти переменные env или набор инструментов платформы?

Пожалуйста, помогите мне разобраться в ядре. Любые ссылки также были бы полезны.

Благодарить всех.

1 Ответов

Рейтинг:
2

Richard MacCutchan

1. Набор инструментов платформы используется для определения различных версий библиотек и платформ, необходимых для генерации правильного кода приложения, например x86, x64, Windows версии и т.д.

2. Эти параметры среды используются только в Visual Studio или в пакетном процессе, в котором компилятор вызывается из командной строки.

3. Пакетный файл файл vsvars32.летучая мышь настраивает все необходимые параметры окружающей среды, чтобы позволить пакетный запуск компилятора VC и компоновщика. Я понятия не имею, почему вам нужно было бы запускать это как событие после сборки, если только за ним не следует какая-то другая команда(ы).

4. так это чистый C++ или C++/CLI?


Member 11072126

Спасибо Ричарду за ваш ответ.
Что касается ваших сомнений относительно того, почему вы используете vsvars32.bat в качестве события после сборки, честно говоря, я тоже понятия не имею, и поэтому начал исследовать этот вопрос.

Итак, на данный момент я понял, что если я строю с помощью опции сборки Visual Studio, то мне не нужно запускать это событие после сборки. Если я использую любую другую IDE, такую как Visual Studio Code или любую другую IDE, у которой нет встроенного компилятора C++ и параметров конфигурации (сборка или выпуск), а также параметров настройки платформы, в этих случаях мы можем использовать вызов vsvars32.bat или vsdevcmd.bat для настройки этих параметров платформы и среды.

Что касается вашего последнего вопроса, то я чувствую его C++/CLI.

Richard MacCutchan

Это просто проверить, просто удалите событие Post Build и попробуйте перестроить проект.

Что касается вашего последнего ответа, что вы имеете в виду? "Я чувствую его C++/CLI"- Либо это так, либо нет.

Member 11072126

Ну, на самом деле я изучал С++ в колледже, и теперь, когда я получил этот проект, я просто рассматривал его как с++. Я понятия не имел о CLI или чистом C++.

Richard MacCutchan

Так что же это?

Member 11072126

Это код MFC

Richard MacCutchan

Ну, это не C++/CLI.

Member 11072126

Хорошо. Итак, почему эти переменные среды должны быть установлены при запуске этих пакетных файлов для приложения C++?

Richard MacCutchan

А они-нет. Что бы ни делал этот пакетный файл, он не имеет никакого отношения к созданию программы в Visual Studio.