Несколько основных файлов C++ в одном проекте Visual Studio

Я только начинаю свой путь в программировании на C++ (из многих других языков). Поскольку я изучаю основы, я хотел бы хранить много простых программ на C++ в одном проекте. Каждое из этих простых консольных приложений будет содержать основную функцию.

При создании пустого проекта C++ Visual Studio создает 15 файлов размером 546 КБ. Чтобы сэкономить место на моем компьютере, было бы лучше иметь подпапки в этом отдельном проекте для каждой небольшой программы на C++ для учебных целей.

Можно ли разбить разные консольные программы на отдельные папки в одном проекте Visual Studio C++? Я использую VS 2017 Community Edition.

Редактировать: Я понимаю, что вы можете создать решение VS с несколькими проектами внутри. Причина, по которой я не хочу этого делать, объяснена выше. 546 КБ — это много места, которое можно выделить только для запуска небольшого консольного приложения. Было бы лучше иметь много программ, которые могут работать независимо в рамках одного проекта. Есть ли способ в VS выбрать, какую основную функцию вызывать из всех основных файлов С++?

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

Robert Andrzejuk 16.02.2019 23:01

Просто имейте одну главную функцию и каждую подпрограмму в своей собственной функции. Вызовите подпрограмму в основной функции.

One Man Monkey Squad 16.02.2019 23:01

См. редактирование вопроса, почему я не хочу использовать много проектов в одном решении.

crayden 16.02.2019 23:10

Если вы беспокоитесь об использовании диска, вам действительно не следует использовать Visual Studio. Используйте что-то более легкое.

john 17.02.2019 00:02

@john, что бы ты порекомендовал?

crayden 17.02.2019 00:23

Я использую Visual Studio, поэтому мне не нужны альтернативы. Многие люди используют Code::Blocks, но не воспринимайте это как личную рекомендацию.

john 17.02.2019 00:35
devblogs.microsoft.com/cppblog/…
Robert Andrzejuk 22.02.2019 16:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
587
2

Ответы 2

Вы можете использовать отдельную конфигурацию проекта для каждой основной функции, которая есть в вашем проекте (например, создать конфигурации проекта с именами Main1 и Main2). Затем вы можете условно включить файл .cpp, который реализует соответствующую основную функцию, отредактировав файл .vcxproj, например:

<ClCompile Include = "main1.cpp" Condition = "'$(Configuration)' == 'Main1'" />
<ClCompile Include = "main2.cpp" Condition = "'$(Configuration)' == 'Main2'" />

Это будет включать main1.cpp только для конфигурации с именем Main1 и main2.cpp только для конфигурации с именем Main2.

Я бы поставил не рекомендую, потому что Visual Studio 2017 неправильно обновляет обозреватель решений, когда вы переключаете текущую конфигурацию, и вам нужно перезагрузить проект, чтобы увидеть текущие файлы.

Спасибо за минус! Этот ответ решает проблему, но, как я уже сказал, это не рекомендуется из-за проблем с пользовательским интерфейсом, однако я не мог понизить свой голос :)

Marcin Zawiejski 16.02.2019 23:39

Просто голова вверх, это не я проголосовал против. Ваш ответ очень ценен. В настоящее время я решил, что, скорее всего, буду использовать что-то более легкое, например инструменты командной строки Visual Studio.

crayden 17.02.2019 00:40

Вместо условного включения используйте свойство Исключено из сборки, чтобы исключить файлы, которые не должны компилироваться как часть текущей конфигурации. Это покажет все файлы в обозревателе решений, но включает только соответствующие файлы, когда сборка фактически выполняется. Это немного назад, но хорошо работает с пользовательским интерфейсом. Дополнительным преимуществом этого является то, что редактор свойств VS может делать это без необходимости открывать и вручную редактировать файл vcproj.

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

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