Давайте рассмотрим проект со следующей структурой:
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 ++ с проектом с несколькими библиотеками, не тратя время на поддержку этой бесконечной сложной системы сборки?