Как запустить и отладить многофайловый мультибиблиотечный проект в vscode? - PullRequest
0 голосов
/ 05 мая 2020

Давайте рассмотрим проект со следующей структурой:

project
--main
  --fileX.h
  --fileX.cpp
  --main.cpp // only file, that guranteed to have main()
--libA
  --libA.h
  --fileX.cpp
  --fileY.cpp If they are outdated/not built - build them first
--libB
  --libB.h
  --fileZ.cpp
  --fileW.cpp

Довольно просто, также давайте учесть, что проект должен включать и связывать что-то стандартное, например OpenGL lib.

On windows там, откуда я родом, есть Visual Studio, и все было предельно просто и в каком-то «стандартном» виде:

  • Вы создаете решение project. Это похоже на root, который просто объединяет проекты в едином дереве
  • Вы создаете проекты: main типа "binary" и пару библиотек libA, libB из "library" типы (stati c или Dynami c, как вам нужно). Это скажет системе сборки, как она должна склеивать их вместе.
  • Вы редактируете main настройки:
    • Добавляете внешние имена include и lib, а также пути
    • Добавляете зависимости. main требует libA и libB. Это одновременно подсказка о порядке сборки и подсказка по связыванию.
  • Вы добавляете файлы туда и сюда, кодируете все это, вносите какие-либо изменения.
  • Нажмите debug / run и наслаждаться. Система сборки (пере) компилирует только необходимые файлы и связывает все необходимое

Все включает менее 100 действий, я имею в виду нажатия клавиш и щелчки мыши. VS Commutiny IDE полностью бесплатна для использования (поэтому в комментариях и ответах нельзя было делать никаких предложений «Использовать эту крутую платную IDE»).

Теперь вопрос. Я установил Ubuntu и vscode, и я натыкаюсь на стену, пытаясь настроить тот же проект. Какие действия нужно выполнить, чтобы я мог изменить любой исходный файл в проекте, нажать F5 (Отладка), и он будет скомпилирован и запущен с такой же настройкой сборки и скоростью?

Что я рассмотрел ?

  • Makefile: почти то же самое, что писать собственный сценарий оболочки. Это как если бы вам пришлось выучить новый язык, чтобы выполнить небольшую довольно стандартную задачу - создать проект. Высокий уровень входа, чтобы уметь это делать.
  • vscode launch.json / tasks. json - другой язык, с примерами для компиляции только одного файла: main. cpp (или просто активного файла ). Трудно создать вручную, требует хорошего знания внутренних переменных "env"
  • CMake - еще один новый язык программирования, отличный от всех остальных, даже не знаю, как сделать vscode и Cmake друзьями

Как новичку начать отладку C ++ с проектом с несколькими библиотеками, не тратя время на поддержку этой бесконечной сложной системы сборки?

...