C++ a VSCode

Používvám již nějakou dobu VSCode editor v souvislosti s jakýmkoliv vývojem. VSCode je odlehčený bratříček Visual Studia. Začínám si ale pomalu myslet, že VSCode je vlastně mnohem komplexnější nástroj, než Visual Studio. A to díky možnosti doplňků, kterých je obrovské množství.

Tento článek píšu pro budoucí možnosti připomenutí, jak některá nastavení VSCode fungují. Každý specifický vývoj totiž ssebou nese nuntost konfigurace projektu v závislosti na tom, jaké technologie se pro projekt používají.

Když si nainstalujeme VSCode v jakémkoliv OS, je nutné do systému dodat kompilační nástrojový řetězec. Tím se zde nebudu zabývat. Stačí jen vědět, že potřebujeme v Linuxu např. GCC, CLang a ve Windows např. obecně velmi oblíbený MSYS2 s GCC, nebo cygwin, atd. Pro další podporu dalších funkcí ve VSCode se instalují přímo ve VSCode doplňky. Prohlížeč doplňků je přímo integrovaný v samotném VSCode, takže je celá správa programovacího zázemí poměrně intuitivní.

C++ a Cmake pro bobtnající projekty

Doplňky CMake, CMake Language Support, CMake Tools
Doplňky C/C++, C/C++ Clang Command Adapter, C/C++ Extension Pack, C/C++ Themes a případně další

Nový projekt, který bude sestavovat CMAKE, se dá vytvořit jednoduše pomocí CMake:Quick Start. VSCode nabízí speciální MENU pomocí kombinace kláves CTRL+SHIFT+P. Do tohoto menu můžeme psát příkazy. Napíšeme CMAKE:Quick Start.

Vyplníme vstupy pro které se nás to bude ptát a nový projekt s jedním souborem main.cpp se automaticky vytvoří. Následně již můžeme pomocí F7 zdroj sestavit a pomocí CTRL+F5 zdroj debugovat.

Pokud existuje projekt, který ke svému sestavení používá CMAKE, stačí vejít do složky tohoto projektu a pro otevření ve VSCode zadat příkaz code . (tečka je nutná), tečka zajistí, že se ve VSCode otevře workplace (pracovní místo) pro aktuální cestu, ve které se nacházíme, když VSCode spouštíme.

V případě, že se projekt sestavuje pomocí CMAKE. To poznáme také díky přítomnosti souboru CMakeLists.txt. Tak se nám v levé liště VSCode zobrazí logo CMake, kde máme další možnosti nastavení pomocí myši. Jedná se o výběr nástrojového řetězce (výběr kompileru) a přepínání např. typu kompilace, a některé další nastavení.

Ukázka konfigurace CMake, který ukazuje použití sestavování projektu.

cmake_minimum_required(VERSION 3.5.0)
project(glfw_opengl3 VERSION 0.1.0 LANGUAGES C CXX)

# ImGui se přitáhne jako submodule pomocí příkazu
# git submodule add https://github.com/ocornut/imgui.git
# závislosti: apt-get install libglfw-dev
# Pro windows https://thescienceofcode.com/imgui-quickstart/

# Add ImGui source files
set(IMGUI_DIR ${CMAKE_SOURCE_DIR}/../..)
file(GLOB IMGUI_SOURCES
    ${IMGUI_DIR}/*.cpp
    ${IMGUI_DIR}/backends/imgui_impl_glfw.cpp
    ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
)

# Include directories for ImGui
include_directories(${IMGUI_DIR})
include_directories(${IMGUI_DIR}/backends)

# Add executable with ImGui sources
add_executable(glfw_opengl3 main.cpp ${IMGUI_SOURCES})

# Link necessary libraries (e.g., OpenGL, GLFW)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)

target_link_libraries(glfw_opengl3 OpenGL::GL glfw)

Toto je CMake konfigurace, která sestavuje projekt main.cpp závislý na další knihovně v umístění IMGUI_DIR. Zároveň k použití projektu je nutné také přilinkovat podporu pro OpenGl a glfw3. I když vypadá CMake velmi prapodivně, je to zatím to nejlepší, s čím jsem se pro sestavování projektů v C++ pro crossplatform setkal. Důrazně doporučuji se CMake naučit a pochopit jej jako jednu z prvních věcí v případě zahájení studia stát se vývojářem.

Samostatnou syntaxy jazyka CMake již najdeme přímo na webu CMake a s jednoduššími konstrukcemi mi může pomoci také LLM dnešní doby.

CMake se hodí pro projekty, které se postupně začnou rozrůstat a mi chceme, abychom měli robustní systém sestavování i v procesu zvětšování projektu a jeho součástí.

C++ ve VSCode pro projekty o pár souborech

Doplňky C/C++, C/C++ Clang Command Adapter, C/C++ Extension Pack, C/C++ Themes a případně další dle potřeby

Pro jednodušší a menší C/C++ projekty, které obsahují jeden, nebo několik málo dalších zdrojových souborů není nutné používat sofistikovaný sestavovací software, ale postačí nám jednoduchý ruční sestavovací mechanismus nabízející doplňky k VSCode zmíněné výše. Sestavování tak bude v naší režii.

Vytvoříme nový soubor main.cpp a vložíme do něj kód

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(int argc, char *argv[], char* env[])
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;

	return 0;
}

Ve složce, kde se nachází náš zdrojový soubor main.cpp zavoláme VSCode příkazem code . a otevřeme tím náš pracovní prostor v samotném editoru VSCode.

Nyní, když máme náš pracovní prostor otevřený, klikneme na main.cpp a otevřeme jej v editoru. Následně stiskneme F5 a zobrazí se nám nabídka nástrojových řetězců.

Jeden vybereme

A máme hotovo. Automaticky se nám kód přeloží do binární podoby a kód se spustí. Níže je vidět i výstup přeloženého programu do konzole, která je ve VSCode integrovaná.

Takto jednoduše se může ve VSCode nový projekt pro C/C++ přeložit a spustit. Nastavení překladu a samotného projektu je konfigurováno v automaticky vytvořeném souboru tasks.json.

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++-13 build active file",
            "command": "/usr/bin/g++-13",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

Další možnosti nastavení překladu jsou k nalezení přímo na podpoře pro editor VScode. Vše je velmi dobře sepsáno a dokumentace je poměrně jednoduše pochopitelná.

Toto je způsob, který se hodí pro opravdu jednoduché projekty. Pro složitější a zároveň do budoucna jednodušší správu větších projektů se obracím na CMake.

Oba startovací projekty jsem uložil a nahrál na web, takže si je můžeme stáhnout a rovnou použít.
C++ Cmake Projekt
C++ Projekt

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *