Как открыть несколько файлов c

Обновлено: 06.07.2024

В статье вы научитесь создавать программу из нескольких файлов

Содержание

Объявления и определения

Рассмотрим задачу: надо вывести числа от N до 1, при этом для нечётных чисел надо писать odd $ , а для чётных even $ . Вывод должен выглядеть так:

Ради интереса решим задачу с помощью рекурсии:

Увы программа не компилируется. В C++ каждая функция должна быть объявлена или определена до первого использования, но в нашем случае printEvenRecursive использует printOddRecursive, а printOddRecursive использует printEvenRecursive! Мы не можем поместить определение одной функции выше другой так, чтобы каждая функция была объявлена перед использованием.

Но кроме определений функций в C++ есть объявления функций

  • Объявление (declaration) - это конструкция, которая зарезервирует идентификатор и опишет для компилятора его тип, но не раскроет деталей работы объявленной сущности.
  • Определение (definition) - это конструкция, которая не только зарезервирует идентификатор, но и раскроет реализацию связанной с ним сущности

Объявление функции похоже на определение функции, только вместо тела стоит точка с запятой:

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

Хорошим стилем считается заранее и в одном месте писать объявления всех функций, кроме main. Вы можете писать объявления в начале cpp-файла или в заголовке. О заголовках читайте ниже.

Пишем свой заголовок

  • Заголовок может иметь и другое расширение файла, но не стоит нарушать джентльменских соглашений: используйте h или hpp
  • В заголовке пишут только объявления функций, а все определения можно и нужно помещать в cpp-файл

Создайте каталог, и разместите в нём файл print.h , в котором будут объявления функций. Скопируйте туда код, приведённый ниже.

Мы могли бы убрать из заголовка printEvenRecursive и printOddRecursive, сделав его чище, но сейчас для примера оставим.

Запомните правила хорошего тона:

Теперь создайте файл print.cpp , в котором будут реализованы функции из заголовка print.h . Скопируйте туда код, расположенный ниже.

В конце создайте файл main.cpp и скопируйте в него код:

Компоновка программы из нескольких файлов

Собирая программу из одного файла с помощью g++, вы на деле выполняли одним махом два действия:

  • компиляцию, в ходе которой исходный текст файла превращается в логическую модель (AST) и затем превращается в объектный код, в котором машинные коды смешаны со ссылками на внешние функции
  • компоновку, в ходе все внешние ссылки на функции заменяются на машинный код либо превращаются в ссылки на динамические библиотеки (dll/so, также известны как shared libraries)

Сейчас эти же действия мы выполним раздельно. Отройте терминал и введите последовательно две команды:

Если код в обоих cpp-файлах синтаксически правилен, то компилятор создаст два файла: main.o и print.o . Эти файлы называют объектными файлами (object files). Именно они содержат машинный код, смешанный со ссылками на внешние функции.

Вы можете дизассемблировать эти файлы, чтобы посмотреть, во что компилятор превратил ваш код. Для этого выполните команду objdump -d main.o .

Теперь мы вызовем g++ для компоновки объектных файлов. На выходе мы получим исполняемый файл print_executable.exe

На деле компилятор не будет компоновать: он передаст эту задачу утилите ld. Вызывать утилиту ld вручную мы не станем, потому что потребуются дополнительные флаги, которые включают компоновку со стандартной библиотекой C++.

Компоновка программы в CMake

CMake прячет факт раздельной компиляции файлов. Чтобы в CMake скомпоновать программу, состоящую из нескольких частей, просто перечислите эти файлы в add_executable.

Удалите файл print_recursive.exe :

Создайте файл CMakeFiles.txt с одной строкой:

Теперь выполните конфигурирование и сборку программы:

Мы почти закончили! Остался только один вопрос: почему в add_executable мы указали заголовок print.h , если он всё равно не компилируется сам по себе? Дело в том, что при любых изменениях в коде заголовка print.h вся программа должна быть пересобрана, но файл print.h сам по себе не компилируется. Добавление print.h в список исходников в CMake позволяет CMake следить за датой и временем модификации заголовка, чтобы решить, надо ли повторно собирать проект из-за изменений в заголовках.

Как только программы становятся больше, их следует разбивать на несколько файлов (в целях удобства и улучшения функциональности). Одним из преимуществ использования IDE является легкость в работе с n-ным количеством файлов. Мы уже знаем, как создавать и компилировать однофайловые проекты, добавление новых файлов не составит труда.

Многофайловые проекты в Visual Studio

В Visual Studio щелкните правой кнопкой мыши по имени вашего проекта в "Обозревателе решений" , затем "Добавить" > "Создать элемент. " :


Во всплывающем диалоговом окне выберите тип файла, укажите его имя, расположение, а затем нажмите "Добавить" :


Также вы можете добавлять файлы к вашему проекту через "Проект" > "Добавить новый элемент. " :



Многофайловые проекты в Code::Blocks

В Code::Blocks перейдите в "File" > "New" > "File. " :


Затем выберите "C/C++ source" и нажмите "Go" :


Затем "Next" (этого окна может и не быть):


Затем "C++" и опять "Next" :


Затем укажите имя нового файла (не забудьте расширение .cpp) и его расположение (нажмите на троеточие и выберите путь). Убедитесь, что поставлены все три галочки (они отвечают за конфигурации сборки). Затем нажмите "Finish" :


Готово! Файл добавлен.

Многофайловые проекты в GCC/G++

В командной строке вам нужно будет создать файл, указать его имя и подключить к компиляции, например:

g++ main.cpp add.cpp -o main

Пример многофайловой программы

Рассмотрим следующую программу, которая состоит из двух файлов.

std :: cout << "The sum of 3 and 4 is: " << add ( 3 , 4 ) << std :: endl ;

Попробуйте запустить эту программу. Она не скомпилируется, вы получите следующую ошибку:

add: идентификатор не найден

При компиляции кода, компилятор не знает о существовании функций, которые находятся в других файлах. Это сделано специально, чтобы функции и переменные с одинаковыми именами, но в разных файлах, не вызывали конфликт имен.

Тем не менее, в данном случае, мы хотим, чтобы main.cpp знал (и использовал) функцию аdd(), которая находится в add.cpp. Для предоставления доступа main.cpp к функциям add.cpp, нам нужно использовать предварительное объявление:

int add ( int x , int y ) ; // это нужно для того, чтобы main.cpp знал, что функция add() определена в другом месте std :: cout << "The sum of 3 and 4 is: " << add ( 3 , 4 ) << std :: endl ;

Теперь, когда компилятор будет компилировать main.cpp, он будет знать, что такое add(). Попробуйте запустить эту программу еще раз.

Что-то пошло не так!

Пункт №1: Если вы получили ошибку от компилятора, что функция add() не определена в main(), то, скорее всего, вы забыли записать предварительное объявление функции add() в main.cpp.

Пункт №2: Если вы получили следующую ошибку от линкера:

unresolved external symbol "int __cdecl add(int,int)" (?add@@YAHHH@Z) referenced in function _main

то возможных решений есть несколько:

a) Cкорее всего, add.cpp некорректно добавлен в ваш проект. Если вы используете Visual Studio или Code::Blocks, то вы должны увидеть add.cpp в "Обозревателе решений" в списке файлов вашего проекта или в панели проекта IDE. Если добавленного файла нет, то щелкните правой кнопкой мыши по вашему проекту и добавьте файл, как это показано выше, а затем повторите попытку компиляции вашего проекта.

б) Вполне возможно, что вы добавили add.cpp к другому проекту.

в) Вполне возможно, что добавленный файл не подключен к компиляции/линкингу. Щелкните правой кнопкой мыши по имени вашего добавленного файла и выберите "Свойства" :


Убедитесь, что пункт "Исключен из сборки" оставлен пустым или выбрано значение "Нет" :


Пункт №3: Не следует писать следующую строку в main.cpp:

Наличие этой строки приведет к тому, что компилятор вставит всё содержимое add.cpp непосредственно в main.cpp вместо того, чтобы рассматривать эти файлы как отдельные.

Разделите следующую программу на два файла (main.cpp и input.cpp): main.cpp должен содержать функцию main(), а input.cpp — функцию getInteger().

Помните, что для функции getInteger() вам понадобится предварительное объявление в main.cpp.

Ответ

int getInteger ( ) ; // предварительное объявление функции getInteger() (906 оценок, среднее: 4,87 из 5)

Урок №19. Прототип функции и Предварительное объявление

Комментариев: 50

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

Здравствуйте. А если у меня функция getInteger() будет определена в 2 и более файлах, то как файл с функцией main() поймет какой именно getInteger() мне требуется?

Я методом тыка уже определил что будет ошибка )

Юрий :

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

Юрий :

Смотрите решение в уроке №7.

Спасибо, Юрий! Замечательные уроки! Получаю удовольствие.. Возникают вопросы.. ищу на сайтах.. нахожу.. Будут посерьёзнее, намерен обращаться, если позволите!

Юрий :

Начал изучать С++ для создания игр на Unreal, но там все как то сложно.
Случайно наткнулся на ваши уроки, это же просто чудо какое то)
Спасибо за ваш труд.
Пожалуй накидаю плюсиков в карму автору)

Мне кажется стоило также указать что хорошим тоном является написать функцию в <name>.cpp, сделать её объявление в <name>.h, после чего подключить <name.h> в основном файле.

Вместо того чтобы писать объявления функций напрямую.

Первый файл с функцией int getInteger():

Может кто-нибудь знает как это все осуществить при помощи Xcode, или статью какую-нибудь по обучению использования этой среды.

А что сложного в Xcode? Всё по аналогии с VS, но со своими особенностями (если уж на то пошло). Можно нагуглить на крайний случай.

Юрий :

Здравствуйте я пишу в андроид с помощью Dcoder и хотел пройти тест в конце этого урока но у меня выдаёт ошибку.

Спасибо за уроки, хороший язык оказывается.

Срочно нужна помощь.
Начал программировать на андроид с приложения Dcoder(c++: GCC compiler 6.3 (знаю, что это неудобно и т. д., но лучше так, чем никак).
С этим уроком получилась зиминка из-за моего не состояния найти способ, как связать несколько файлов именно в этом приложении. Если кто-то что с этим делать, тогда пишите (буду очень благодарен). Автору спасибо за уроки. Всё очень доходчиво написано.

Это символ переноса строки, такая управляющая последовательность(и гуглите 🙂 )

Какая же чудесная находка для меня эти уроки) Автору огромное спасибо за проделанную работу за перевод и адаптацию

Юрий : Юрий :

Здравствуйте. Как добавлять файлы в Visual Studio 2017 если он на русском. Просто не очень понятно, переводчик не помогает.

Юрий :

Тогда я ошибся, и это чудесно =) Прошу прощения. Я не заметил ссылки, привык их искать где-то в аннотации.

Юрий :

Ничего, без проблем 🙂

Добрый день! При попытке добавить в функцию, которая находится в отдельном файле, "stdafx.h" компилятор выдаёт ошибку: не удаётся открыть файл включения stdafx.h: No such file or directory. Без stdafx.h всё нормально работает. Visual Studio 2015.

Юрий :

Сегодня читала статью с телефона. Очень удобный сайт)

Юрий :

Когда пишу файл add.cpp постоянно не идёт,это ж линкер мешает по моему. И что ему не так,когда твою программу скопировал,также всё:

Ошибка LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) add.cpp 1

Юрий :

Вы сделали всё как в уроке? Правильно добавили файл? К тому проекту, что нужно?

Почему в VS нужно обязательно подключать библиотеку stdafx.h? Раньше, когда я учился по видеоурокам, я писал программы и без ее подключения. Но конечно есть одно но, я тогда немного изменил параметры создания проекта: поставил галочку на "Empty project" и удалил галочку на "Security Development Lifecycle (SDL) checks ". Может быть это как-то повлияло?

Юрий :

Зачем писать названия в VS (например Source Files) на английском, если в VS есть русский язык?

Получите доступ к файлам и папкам, разрешив пользователю взаимодействовать со средством выбора. Для получения доступа к файлам можно использовать классы FileOpenPicker и FileSavePicker, а для получения доступа к папкам — класс FolderPicker.

Необходимые компоненты

Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP) .

Права доступа к расположению

Пользовательский интерфейс средства выбора файлов

В средстве выбора файлов отображаются сведения, позволяющие сориентировать пользователей и обеспечить им привычное взаимодействие с системой при открытии и сохранении файлов.

Эти сведения включают следующее:

  • текущее расположение;
  • выбранный пользователем элемент или несколько элементов;
  • дерево расположений, к которым может перейти пользователь. Они включают расположения в файловой системе, например папку «Музыка» или «Загрузки», а также приложения, которые реализуют контракт средства выбора файлов (такие как «Камера», «Фотографии» и Microsoft OneDrive).

Почтовое приложение может отображать средство выбора файлов, чтобы предоставить пользователю возможность выбора вложений.

Средство выбора файлов, в котором выбрано два файла для открытия.

Как работают средства выбора

Используя средство выбора, ваше приложение может получать доступ к файлам и папкам в системе пользователя, просматривать и сохранять их. Ваше приложение получает эти выбранные элементы в виде объектов StorageFile и StorageFolder, с которыми потом можно работать.

Средство выбора использует единый унифицированный интерфейс для обеспечения пользователю возможности выбора файлов и папок из файловой системы либо из других приложений. Файлы, выбранные из других приложений, воспринимаются как файлы из файловой системы: они возвращаются как объекты StorageFile. В целом ваше приложение может работать с ними так же, как с другими объектами. Другие приложения обеспечивают доступ к файлам за счет участия в контрактах средства выбора файлов. Сведения о настройке вашего приложения для предоставления другим приложениям файлов, места сохранения или обновлений файлов см. в разделе Взаимодействие с контрактами "Средство выбора файлов".

Например, вы можете вызывать средство выбора файлов в своем приложении, чтобы пользователь имел возможность открыть необходимый файл. За счет этого ваше приложение становится вызывающим приложением. Средство выбора файлов взаимодействует с системой и/или другими приложениями, обеспечивая пользователю возможность поиска и выбора определенного файла. Когда пользователь выбирает файл, средство выбора файлов возвращает этот файл в ваше приложение. Ниже показан процесс, который имеет место при выборе пользователем файла из другого приложения, например OneDrive.

Схема, на которой одно приложение получает файл для открытия из другого приложения с помощью средства выбора файлов, играющего роль интерфейса между двумя приложениями.

Выбор одного файла: полный код

Выбор одного файла: пошаговые инструкции

Использование средства выбора файлов включает создание и настройку объекта «средство выбора файлов» и отображение средства выбора файлов, чтобы дать пользователю возможность выбрать один или несколько элементов.

Создание и настройка FileOpenPicker

Задайте свойства объекта «средство выбора файлов», соответствующие вашим пользователям и приложению.

В этом примере создается сложное визуальное представление в виде картинок в удобном расположении, из которых может выбирать пользователь, путем задания трех свойств: ViewMode, SuggestedStartLocation и FileTypeFilter.

Задание для свойства ViewMode значения Thumbnail перечисления PickerViewMode создает сложное визуальное представление за счет эскизов изображений, представляющих файлы в средстве выбора файлов. Выполните это, чтобы выбрать визуальные файлы, например фотографии или видео. В других случаях воспользуйтесь PickerViewMode.List. Гипотетическое почтовое приложение с функциями Прикрепить изображение или видео и Прикрепить документ установит свойство ViewMode, соответствующее функции, прежде чем отобразить средство выбора файлов.

Выбор библиотеки «Изображения» в качестве значения для параметра SuggestedStartLocation с помощью PickerLocationId.PicturesLibrary позволяет пользователю начать работу в расположении вероятного нахождения изображений. Присвойте свойство SuggestedStartLocation расположению, подходящему для типа выбранных файлов, например «Музыка», «Изображения», «Видео» или «Документы». Из начального расположения пользователь может перейти в другие расположения.

Использование FileTypeFilter для указания типов файлов сохраняет внимание пользователя на выборе соответствующих файлов. Чтобы заменить предыдущие типы файлов в FileTypeFilter новыми записями, используйте вместо метода Add метод ReplaceAll.

Отображение FileOpenPicker

Выбор одного файла

Выбор нескольких файлов

Выбор папки: приводится полный код

Каждый раз, когда ваше приложение получает доступ к файлу или папке через средство выбора, добавляйте этот файл или папку в свойство FutureAccessList или MostRecentlyUsedList приложения для отслеживания. Подробнее об использовании этих списков см. в разделе Отслеживание последних использованных файлов и папок.

Откройте несколько файлов в VS Code - Код на экране

Visual Studio Code — это очень хороший редактор исходного кода, разработанный Microsoft и эффективно используемый клиентами благодаря его функциям отладки, встроенному элементу управления GIT и многим другим полезным функциям.

Существуют ситуации, в которых вам непременно потребуется открыть как минимум 2 новые вкладки во время работы в VS Code, и хотя эта опция должна быть легко доступна, у пользователей возникают проблемы с ее поиском.

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

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

Как открыть несколько файлов в VS Code?

1. Измените настройки кода VS

Код на экране - открыть несколько файлов против кода

  1. Откройте VS Code -> щелкните Файл в верхнем меню.
  2. Выберите Preferences из выпадающего списка.
  3. Нажмите на настройки.
  4. Появится окно с настройкамипользователя и рабочего пространства .
  5. Выберите « Настройки рабочего пространства» -> поиск для workbench.editor.showTabs -> измените значение на « Истина».

Примечание. Если для упомянутой выше опции установлено значение False, код VS будет открывать только один файл за раз. Если установлено значение True, вы можете открывать столько файлов, сколько хотите на новых вкладках. Смотрите следующий метод, чтобы лучше понять, как это сделать.

2. Используйте ярлык мыши, чтобы открыть несколько файлов

Кофейная кружка и мышь - открыть несколько файлов в VS Code

Хотя это может показаться очевидным решением для тех из вас, кто имеет опыт работы с VS Code, этот метод очень прост в применении.

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

Если вы хотите открыть новую вкладку, которая остается на вашем экране, пока вы не решите закрыть ее вручную , вам нужно будет дважды щелкнуть файл.

Вывод

В сегодняшнем руководстве мы рассмотрели некоторые из лучших вариантов, доступных для вас, чтобы открыть несколько файлов внутри VS Code.

Первый шаг — убедиться, что настройки VS Code позволяют открывать несколько файлов, а затем вы можете просто использовать мышь, чтобы открывать либо временные, либо обычные новые вкладки.

Если это руководство помогло вам лучше понять и контролировать ситуацию, или у вас есть какие-либо предложения, пожалуйста, не стесняйтесь обращаться к нам и делиться информацией.

Как открыть несколько проектов / папок в одном экземпляре Visual Studio Code и открыть несколько файлов в одном представлении? Есть ли у него возможность запроса на изменение в будущем?

Обновить

Как упоминалось в нескольких других ответах здесь, этот «принятый» ответ устарел и больше не является правильным. VS Code теперь имеет концепцию «рабочего пространства», которое позволяет вам добавлять несколько «корневых» папок в VS Code в одном окне.

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

Для этого вы используете команду Add folder to Workspace. . Затем VS Code сохраняет эту конфигурацию в новом файле с расширением .code-workspace . Если вы дважды щелкните этот файл, VS Code повторно откроется с обеими папками.

Исходный принятый ответ (устарел)

«VSCode основан на файлах и папках - вы можете сразу начать работу, открыв файл или папку в VSCode».

Это означает, что концепция файлов решений и проектов, таких как .sln и .csproj, не имеет реальной функции в VSCode, за исключением того, что он использует их только для нацеливания и определения того, какой язык поддерживать Intellisense и тому подобное.

Проще говоря, открываемая вами папка - это корень, с которым вы работаете. Но, конечно, ничто не мешает вам открыть несколько окон.

Запускать по одному проекту в одном решении

Откройте окно обозревателя решений -> Открыть решение для проекта -> щелкните его правой кнопкой мыши -> Выберите свойства из раскрывающегося списка (Alt + Enter) -> Общие свойства -> выберите проект при запуске, вы увидите «текущий выбор, одиночный выбор и множественный выбор. Выбрав «Текущий выбор», вы сможете запускать по одному проекту за раз в одной и той же рабочей области решения с разным кодом.

Вы можете использовать это расширение, известное как Project Manager.

В этом случае проекты сохраняются в файле projects.json, просто сохраните проект и, нажав Shift + Alt + P , вы увидите список всех ваших сохраненных проектов, оттуда вы можете легко переключать свои проекты.

Вы можете создать рабочее пространство и поместить в него папки: Файл> сохранить рабочее пространство как и перетащить ваши папки в сохраненное рабочее пространство

На данный момент я предлагаю создать символические ссылки в папке, поскольку VSCode не поддерживает эту функцию.

Во-первых, создайте папку, назовите ее так, как хотите.

И вы увидите свои папки в том же окне VSCode.

Вы можете открыть до 3 файлов в одном окне, нажав [CTRL] + [^]

Невозможно нормально открыть новый экземпляр Visual Studio Code, и он не работает, если вы откроете новый экземпляр от имени администратора.

Решение: просто щелкните правой кнопкой мыши на файле VS Code .exe и выберите «Новое окно», чтобы открыть столько новых окон, сколько захотите. :)

Просто поместите свои проекты в ту же папку и просто откройте эту папку в vscode.

Теперь ваши проекты будут выглядеть так:

ГРУППА ПРОЕКТОВ

ПРОЕКТ 1

ПРОЕКТ 2

Или вы можете просто выбрать несколько папок и затем нажать «Открыть».

Перейдите в Файл> Открыть папку , затем выберите несколько папок, которые хотите открыть, и нажмите Выбрать папку .

Вы можете установить расширение Контекстные меню открытых папок для VS Code от Криса Диаса.

  • Перезапустить код Visual Studio
  • Щелкните папку правой кнопкой мыши и выберите «Открыть новую рабочую среду здесь».

Несколько папок в VS

Щелкните -> Файл -> Добавить папку на рабочее место.

enter image description here

Выберите, над каким проектом работать -> Добавить (нажмите)

enter image description here

Теперь мы можем открывать несколько папок в одном экземпляре, код Visual Studio назван Workspace («Area de Trabajo»). Взгляните на изображения, это очень просто.

enter image description here

enter image description here

В Windows можно использовать mklink для создания символических ссылок каталогов на необходимые папки. Затем храните их вместе в папке, и VSCode перечислит их содержимое.

Думаю, это очень похоже на идею @NeilShen.

Вы можете открыть любую папку, поэтому, если ваши проекты находятся в одном дереве, просто откройте папку под ними.

В противном случае вы можете открыть 2 экземпляра кода в качестве другого варианта

Поддержка многокорневых рабочих пространств теперь включена по умолчанию в последней стабильной версии. выпуск [выпуск за ноябрь 2017 г.].

Команда File > Add Folder to Workspace вызывает диалоговое окно "Открыть папку" для выбора новой папки.

enter image description here

Если вы используете unix-подобную ОС, вы можете создать мягкую ссылку на вашу целевую папку.

Например. Я хочу видеть исходный код golang, пока использую VSCode. Итак, я создаю мягкую ссылку на go/src в папке моего проекта.

Надеюсь это поможет!

Это был наш запрос на функцию №1 - это было давно, но теперь оно здесь.

Полная документация находится здесь.

Вы можете работать с несколькими папками проекта в Visual Studio Code с несколькими корневыми рабочими пространствами. Это может быть очень полезно, когда вы работаете над несколькими связанными проектами одновременно. Например, у вас может быть репозиторий с документацией по продукту, которую вы хотите поддерживать в актуальном состоянии при обновлении исходного кода продукта.

Оригинальный ответ

В настоящее время инсайдерский канал VSCode дает нам это прямо из коробки.

Multi root workspace in vscode

Дополнительные сведения см. В записи блога.

Не уверен, почему не упоминается самое простое решение. Вы можете просто сделать File>New Window и открыть другой проект в новом окне.

Читайте также: