====== Конспект по C++ ======
> :!: Данная заметка находится в процессе написания
> FIXME Требуется проверка орфографии и грамматики.
> FIXME Заметка написана от первого лица.
Добро пожаловать в заметку про С++! В ней планируется расписать путь изучения данного языка с полного нуля, до джуна (хотя бы). С++ очень большой язык, с не менее большой историей, а заметку пишет в основном один редактор, поэтому возможны неточности и сильные заблуждения!. К С++ в заметке будут обращаться как "плюсы", "с++", "спп".
===== Подготовка =====
Прежде чем начать изучать С++ нужно уяснить несколько моментов:
* Если есть выбор, то надо идти по пути наименьшего сопротивления.
* Если нет настроения, то надо отдохнуть.
* Сложности могут вызывать неприятные ощущения. Их надо превозмочь.
После уяснения этих моментов можно приступать к настройке нашего окружения, где мы будем изучать язык.
==== IDE и редакторы кода ====
На Windows есть отличная среда разработки - Visual Studio, которую сделали сами Microsoft. В Linux такого богатства нет (кто бы сомневался?). Помимо бесплатных решений есть платный CLion, который доступен на Windows и Linux, но мы же open-source разработчики и средствами на такое удовольствие не располагаем.
> FIXME Если вы читаете эту заметку на Windows, то огорчу вас. Основной редактор этой заметки – линуксоид и он понятия не имеет как настроить среду под вашу ОС. Если вы разберётесь в этом вопросе самостоятельно, то можете дополнить данную заметку самостоятельно!
Однако на Линуксе есть Visual Studio Code((И множество редакторов внутри терминала, которые оставлены на самостоятельное изучение читателем.)), который можно настроить под плюсы. Этим я и занялся в первый день изучения. После установки данного плагина
**:!: Настоятельно рекомендуется скачать VSC из репозиториев вашего дистрибутива. Flatpak версия обеспечит вас лишней головной болью из-за [[Контейнеризация|контейнеризации]].**
После того, как вы скачали VSC, надо приступить к установке плагинов к нему. Выбор редактора заметки пал на расширение [[https://open-vsx.org/vscode/item?itemName=KylinIdeTeam.kylin-clangd|Kylin Clangd]], которое подсвечивает синтаксис, помогает поймать опечатки и возможные ошибки компиляции. Но помимо подсветки синтаксиса необходимо дебажить полученный бинарный файл. Для этого редактор рекомендует скачать плагин [[https://open-vsx.org/vscode/item?itemName=vadimcn.vscode-lldb|lldb дебаггер]]. Этой подготовки хватит, чтобы писать код на C++ было удобно.
Поскольку Visual Studio Code неполноценная IDE, рано появляется необходимость автоматизации процесса создания проекта и его сборки. Специально для совбатока, были подготовлены универсальные Makefile и launch.json, которые позволят быстро создавать скелет проекта, собирать и дебажить его. Далее в заметке будет обращение к строкам из этих файлов, чтобы объяснить их получше.
# Compiler and flags
CXX = clang++
CXXFLAGS = -std=c++17 -pedantic-errors -Wall -Wextra -Wpedantic -Werror
DEBUG_FLAGS = -g -ggdb
RELEASE_FLAGS = -O2 -DNDEBUG
# Directories
BUILD_DIR = build
SRC_DIR = src
INCLUDE_DIR = include
LIBS_DIR = libs
DOCS_DIR = docs
# Find all source files
SRC_FILES = $(shell find $(SRC_DIR) -name '*.cpp')
# Default target
all: debug
# Create project structure
structure:
mkdir -p $(BUILD_DIR) $(INCLUDE_DIR) $(LIBS_DIR) $(DOCS_DIR)
# Debug build - builds all .cpp files in src/
debug: structure
$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) \
-I$(INCLUDE_DIR) \
-I$(LIBS_DIR) \
$(SRC_FILES) \
-o $(BUILD_DIR)/debug-app
# Release build - builds all .cpp files in current directory
# Note: This assumes you run make from the directory containing .cpp files
release: structure
$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) \
-I./includes \
-DNDEBUG \
$(SRC_FILES) \
-o $(BUILD_DIR)/release-app
# Clean build artifacts
clean:
rm -rf $(BUILD_DIR)/debug-app $(BUILD_DIR)/release-app
# Help target
help:
@echo "Available targets:"
@echo " all - Build debug version (default)"
@echo " debug - Build with debug flags"
@echo " release - Build with release flags"
@echo " structure - Create project directories"
@echo " clean - Remove build artifacts"
@echo " help - Show this help message"
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/debug-app",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
Файл конфигурации дебаггера launch.json нужно поместить в папку .vscode внутри проекта. А Makefile нужно положить в корень. Чтобы пользоваться Makefile'ом, в GNU/Linux есть команда make. После помещения всех файлов на свои места попробуйте написать в терминале make help. Если все сделано правильно, то терминал выдаст сводку по использованию файла.
На этом подготовку среды можно завершить.
==== Компиляторы ====
> :?: В процессе изучения...