Podpora otevřít složku pro systémy sestavení C++ v Visual Studio
Funkce Otevřít složku je dostupná v Visual Studio 2017 a novějších verzích.
V Visual Studio 2017 a novějších verzích vám funkce Otevřít složku umožňuje otevřít složku zdrojových souborů a okamžitě začít kódovat s podporou Technologie IntelliSense, procházení, refaktoringu, ladění atd. Při úpravách, vytváření, přesouvování nebo odstraňování souborů Visual Studio změny automaticky a průběžně aktualizuje svůj index IntelliSense. Nejsou načteny žádné soubory .sln nebo .vcxproj. V případě potřeby můžete zadat vlastní úlohy a také sestavit a spustit parametry prostřednictvím jednoduchých souborů .json. Tato funkce umožňuje integrovat do systému sestavení třetí strany Visual Studio. Obecné informace o otevřené složce najdete v tématu Vývoj kódu v Visual Studio bez projektů nebo řešení.
CMake a Qt
CMake je integrovaný do Visual Studio IDE jako součást desktopové úlohy C++. Pracovní postup pro CMake není stejný jako pracovní postup popsaný v tomto článku. Pokud používáte CMake, podívejte se na projekty CMake v Visual Studio. K vytváření projektů Qt můžete použít také CMake nebo můžete použít rozšíření Qt Visual Studio pro Visual Studio 2015 nebo Visual Studio 2017.
Další systémy sestavení
Pokud chcete používat Visual Studio IDE se systémem sestavení nebo se sadami nástrojů kompilátoru, které nejsou přímo podporované v hlavní nabídce, vyberte Soubor | Otevřít | Složku nebo stiskněte Ctrl + Shift + Alt + O. Přejděte do složky, která obsahuje soubory se zdrojovým kódem. Pokud chcete sestavit projekt, nakonfigurujte IntelliSense a nastavte parametry ladění a přidejte tři soubory JSON:
| Soubor | Popis |
|---|---|
| CppProperties.json | Zadejte informace o vlastní konfiguraci pro procházení. V případě potřeby vytvořte tento soubor v kořenové složce projektu. (Nepouží se v projektech CMake.) |
| tasks.vs.json | Zadejte vlastní příkazy sestavení. Přístup prostřednictvím položky Průzkumník řešení místní nabídky Konfigurovat úlohy. |
| launch.vs.json | Zadejte argumenty příkazového řádku pro ladicí program. Přistupuje se Průzkumník řešení místní nabídce Ladit a spustit Nastavení. |
Konfigurace navigace v kódu pomocí souboru CppProperties.json
Aby technologie IntelliSense a chování při procházení, jako je přejít k definici, fungovaly správně, musí Visual Studio vědět, který kompilátor používáte, kde se nacházejí systémové hlavičky a kde jsou umístěné všechny další zahrnuté soubory, pokud nejsou přímo ve složce, kterou jste otevřeli (složka pracovního prostoru). Pokud chcete zadat konfiguraci, můžete v rozevíracím seznamu na hlavním panelu nástrojů zvolit Spravovat konfigurace:

Visual Studio nabízí následující výchozí konfigurace:

Pokud například zvolíte x64-Debug, Visual Studio v kořenové složce projektu vytvoří soubor CppProperties.json:
{
"configurations": [
{
"inheritEnvironments": [
"msvc_x64"
],
"name": "x64-Debug",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"defines": [
"WIN32",
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "windows-msvc-x64"
}
]
}
Tato konfigurace dědí proměnné prostředí nástroje Visual Studio x64 Developer Command Prompt. Jednou z těchto proměnných INCLUDE je a můžete na něj odkazovat pomocí makra ${env.INCLUDE} . Vlastnost říká, Visual Studio kde hledat všechny zdroje, includePath které potřebuje pro IntelliSense. V tomto případě se uvádí "podívejte se do všech adresářů určených proměnnou prostředí INCLUDE a také na všechny adresáře v aktuálním stromu pracovních složek". Vlastnost je název, který se zobrazí v rozevíracím seznamu a může name být, jak chcete. Vlastnost defines poskytuje intellisense nápovědu, když narazí na podmíněné kompilace bloků. Vlastnost intelliSenseMode poskytuje několik dalších tipů na základě typu kompilátoru. Pro soubory MSVC, GCC a Clang je k dispozici několik možností.
Poznámka
Pokud Visual Studio zdá, že ignorujete nastavení souboru CppProperties.json,zkuste do souboru .gitignore přidat výjimku, například: .
Výchozí konfigurace pro MinGW-w64
Pokud přidáte konfiguraci MinGW-W64, json vypadá takhle:
{
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.BIN_ROOT};${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}",
"environment": "mingw_64"
}
]
}
]
}
Poznamenejte si environments blok. Definuje vlastnosti, které se chovají jako proměnné prostředí a jsou dostupné nejen v souboru CppProperties.json, ale také v dalších konfiguračních souborech task.vs.json a launch.vs.json. Konfigurace Mingw64 dědí mingw_w64 prostředí a používá jeho INCLUDE vlastnost k určení hodnoty pro includePath . Podle potřeby můžete k této vlastnosti pole přidat další cesty.
Vlastnost intelliSenseMode je nastavená na hodnotu vhodnou pro GCC. Další informace o všech těchto vlastnostech najdete v tématu Referenční informace ke schématu CppProperties.
Pokud vše funguje správně, intellisense se zobrazí z GCC záhlaví, když najedete myší na typ:

Povolení diagnostiky IntelliSense
Pokud se vám technologie IntelliSense, kterou očekáváte, neztrácíte, můžete problém vyřešit tak, že v části Nástroje Možnosti Textový editorC/C++ Upřesnit nastavíte Povolit protokolování na . Začněte tím, že nastavíte Úroveň protokolování na 5 a Filtry protokolování na 8.

Výstup se předá do okno Výstup a zobrazí se, když zvolíte *Zobrazit výstup z: Visual C++ protokolu. Výstup obsahuje mimo jiné seznam skutečných cest zahrnutí, které se IntelliSense pokouší použít. Pokud se cesty neshodují s cestami v souboru CppProperties.json,zkuste zavřít složku a odstranit podsložku .vs, která obsahuje data procházení uložená v mezipaměti.
Definování úloh sestavení pomocí souboru tasks.vs.json
Můžete automatizovat skripty sestavení nebo jakékoli jiné externí operace se soubory, které máte v aktuálním pracovním prostoru, jejich spuštěním jako úlohy přímo v integrovaném vývojovém prostředí. Novou úlohu můžete nakonfigurovat tak, že kliknete pravým tlačítkem na soubor nebo složku a vyberete Konfigurovat úlohy.

Tím se ve složce .vs vytvoří (nebo otevře) soubor tasks.vs.json, který Visual Studio v kořenové složce projektu. V tomto souboru můžete definovat libovolnou úlohu a potom ji vyvolat z místní Průzkumník řešení nabídky. Pokud chcete pokračovat GCC příkladu, následující fragment kódu zobrazí úplný soubor tasks.vs.json s jedním úkolem, který vyvolá g++.exe k sestavení projektu. Předpokládejme, že projekt obsahuje jeden soubor s názvem hello.cpp.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "build hello",
"appliesTo": "/",
"type": "default",
"command": "g++",
"args": [
"-g",
"-o",
"hello",
"hello.cpp"
]
}
]
}
Soubor JSON se umístí do podsložky .vs. Pokud chcete složku zobrazit, klikněte na tlačítko Zobrazit všechny soubory v horní části Průzkumník řešení. Tuto úlohu můžete spustit tak, že kliknete pravým tlačítkem na kořenový uzel v Průzkumník řešení a zvolíte build hello. Po dokončení úlohy by se měl zobrazit nový soubor, hello.exev Průzkumník řešení.
Můžete definovat mnoho druhů úloh. Následující příklad ukazuje soubor tasks.vs.json, který definuje jednu úlohu. taskLabel definuje název, který se zobrazí v místní nabídce. appliesTo definuje, pro které soubory je možné příkaz provést. Vlastnost command odkazuje na proměnnou prostředí COMSPEC, která identifikujecommand cestu ke konzole (cmd.exena Windows). Můžete také odkazovat na proměnné prostředí, které jsou deklarovány v souboru CppProperties.json nebo CMakeSettings.json. Vlastnost args určuje příkazový řádek, který se má vyvolat. Makro ${file} načte vybraný soubor v ${file}. Následující příklad zobrazí název souboru aktuálně vybraného souboru .cpp.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "Echo filename",
"appliesTo": "*.cpp",
"type": "command",
"command": "${env.COMSPEC}",
"args": ["echo ${file}"]
}
]
}
Po uložení souboru tasks.vs.jsonmůžete kliknout pravým tlačítkem na libovolný soubor .cpp ve složce, v místní nabídce zvolit Název názvu odezvy a zobrazit název souboru zobrazený v okně Výstup.
Další informace najdete v referenčních informacích ke schématu Tasks.vs.json.
Konfigurace parametrů ladění pomocí souboru launch.vs.json
Pokud chcete přizpůsobit argumenty příkazového řádku programu a pokyny k ladění, klikněte pravým tlačítkem na spustitelný soubor v nástroji Průzkumník řešení vyberte Ladit a spustit Nastavení. Tím se otevře existující soubor launch.vs.json, nebo pokud žádný neexistuje, vytvoří se nový soubor se souborem minimálního nastavení spuštění. Nejprve si můžete vybrat, jaký druh ladicí relace chcete nakonfigurovat. Pro ladění projektu MinGw-w64 zvolíme spuštění C/C++ pro MinGW/Cygwin (gdb). Tím se vytvoří spouštěcí konfigurace pro použití gdb.exe s některými informované odhady o výchozích hodnotách. Jednou z těchto výchozích hodnot je MINGW_PREFIX . Můžete nahradit cestu literálu (jak je znázorněno níže) nebo můžete definovat vlastnost MINGW_PREFIX v MINGW_PREFIX
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "cppdbg",
"name": "hello.exe",
"project": "hello.exe",
"cwd": "${workspaceRoot}",
"program": "${debugInfo.target}",
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\usr\\bin\\gdb.exe",
"externalConsole": true
}
]
}
Ladění spustíte tak, že v rozevíracím seznamu ladění zvolíte spustitelný soubor a potom kliknete na zelenou šipku:

Měli byste vidět dialogové okno Inicializace ladicího programu a pak okno externí konzoly, ve které je spuštěný váš program.
Další informace najdete v referenčních informacích ke schématu launch.vs.json.
Spuštění jiných spustitelných souborů
Nastavení spuštění můžete definovat pro libovolný spustitelný soubor v počítači. Následující příklad spustí 7za a určí další argumenty jejich přidáním do pole JSON:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "default",
"project": "CPP\\7zip\\Bundles\\Alone\\O\\7za.exe",
"name": "7za.exe list content of helloworld.zip",
"args": [ "l", "d:\\sources\\helloworld.zip" ]
}
]
}
Když tento soubor uložíte, nová konfigurace se zobrazí v rozevíracím seznamu Cíl ladění a můžete ho vybrat a spustit ladicí program. Můžete vytvořit libovolný počet konfigurací ladění pro libovolný počet spustitelných souborů. Pokud teď stisknete klávesu F5, ladicí program se spustí a dojde k zarážce, kterou jste už možná nastavili. Nyní jsou k dispozici všechna známá okna ladicího programu a jejich funkce.