Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Mappa megnyitása funkció a Visual Studio 2017-ben és újabb verzióiban érhető el.
A Visual Studio 2017-ben és újabb verzióiban a "Mappa megnyitása" funkcióval megnyithat egy forrásfájlokból álló mappát, és azonnal megkezdheti a kódolást az IntelliSense támogatásával, a böngészéssel, az újrabontással, a hibakereséssel stb. Fájlok szerkesztése, létrehozása, áthelyezése vagy törlése során a Visual Studio automatikusan nyomon követi a módosításokat, és folyamatosan frissíti az IntelliSense indexét. Nincs betöltve .sln vagy .vcxproj fájl; ha szükséges, egyéni feladatokat adhat meg, valamint egyszerű .json fájlokon keresztül hozhat létre és indíthat el paramétereket. Ez a funkció lehetővé teszi, hogy bármilyen külső buildrendszert integráljon a Visual Studióba. A Mappa megnyitása szolgáltatással kapcsolatos általános információkért lásd: Kód fejlesztése a Visual Studióban projektek és megoldások nélkül.
CMake és Qt
A CMake integrálva van a Visual Studio IDE-be a C++ asztali számítási feladat összetevőjeként. A CMake munkafolyamata nem azonos a cikkben ismertetett munkafolyamatokkal. Ha CMake-t használ, tekintse meg a CMake-projekteket a Visual Studióban. A CMake használatával Qt-projekteket is készíthet, vagy használhatja a Qt Visual Studio bővítményt a Visual Studio 2015-höz vagy a Visual Studio 2017-hez.
Egyéb buildrendszerek
Ha a Visual Studio IDE-t olyan buildrendszerrel vagy fordítóeszközkészlettel szeretné használni, amely nem támogatott közvetlenül a főmenüből, válassza a Fájl | Megnyitás | Mappa vagy nyomja le a Ctrl+ Shift+ Alt + O billentyűkombinációt. Keresse meg a forráskódfájlokat tartalmazó mappát. A projekt létrehozásához, az IntelliSense konfigurálásához és a hibakeresési paraméterek beállításához három JSON-fájlt kell hozzáadnia:
| Fájl | Leírás |
|---|---|
| CppProperties.json | Egyéni konfigurációs információk megadása a böngészéshez. Szükség esetén hozza létre ezt a fájlt a gyökérprojekt mappájában. (CMake-projektekben nem használatos.) |
| tasks.vs.json | Egyéni buildparancsok megadása. A Megoldáskezelő helyi menüeleme, a Feladatok konfigurálása menüponton keresztül érhető el. |
| launch.vs.json | Adja meg a hibakereső parancssori argumentumait. Elérhető a Megoldáskezelő helyi menüjének Hibakeresés és Indítási beállítások elemével. |
Kódnavigáció konfigurálása CppProperties.json
Ahhoz, hogy az IntelliSense és a böngészési viselkedés( például a Definíció megnyitása) megfelelően működjön , a Visual Studiónak tudnia kell, hogy melyik fordítót használja, hol vannak a rendszerfejlécek, és hol találhatók a további belefoglalt fájlok, ha azok nem közvetlenül a megnyitott mappában (a munkaterület mappájában) találhatók. Konfiguráció megadásához válassza a Konfigurációk kezelése lehetőséget a fő eszköztár legördülő menüjében:
A Visual Studio a következő alapértelmezett konfigurációkat kínálja:
Ha például az x64-Debug lehetőséget választja, a Visual Studio létrehoz egy CppProperties.json nevű fájlt a projekt gyökérmappájában:
{
"configurations": [
{
"inheritEnvironments": [
"msvc_x64"
],
"name": "x64-Debug",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"defines": [
"WIN32",
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "windows-msvc-x64"
}
]
}
Ez a konfiguráció örökli a Visual Studio x64 fejlesztői parancssor környezeti változóit. Az egyik ilyen változó a INCLUDE, amelyre itt a ${env.INCLUDE} makró használatával lehet hivatkozni. A includePath tulajdonság tájékoztatja a Visual Studiót, hogy hol keresse meg az IntelliSense-hez szükséges összes forrást. Ebben az esetben a következőhöz hasonló szöveg jelenik meg: "Tekintse meg az INCLUDE környezeti változó által megadott összes könyvtárat, valamint az aktuális munkamappafa összes könyvtárát". A name tulajdonság az a név, amely megjelenik a legördülő menüben, és bármilyen tetszés szerint megjeleníthető. A defines tulajdonság tippeket ad az IntelliSense-nek, ha feltételes fordítási blokkokkal találkozik. A intelliSenseMode tulajdonság további tippeket nyújt a fordító típusa alapján. Az MSVC, a GCC és a Clang számos lehetőség közül választhat.
Megjegyzés:
Ha úgy tűnik, hogy a Visual Studio figyelmen kívül hagyja aCppProperties.jsonbeállításait, próbáljon meg kivételt hozzáadni a .gitignore fájlhoz a következő módon: !/CppProperties.json.
A MinGW-w64 alapértelmezett konfigurációja
Ha hozzáadja a MinGW-W64 konfigurációt, a JSON a következőképpen néz ki:
{
"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"
}
]
}
]
}
Jegyezze fel a blokkot environments . Olyan tulajdonságokat határoz meg, amelyek a környezeti változókhoz hasonlóan viselkednek, és nem csak a CppProperties.json fájlban, hanem a többi konfigurációs fájlban task.vs.jsonés launch.vs.jsonis elérhetők. A Mingw64 konfiguráció örökli a mingw_w64 környezetet, és a tulajdonságával INCLUDE adja meg a környezet includePathértékét. Szükség szerint további elérési utakat is hozzáadhat ehhez a tömbtulajdonsághoz.
A intelliSenseMode tulajdonság a GCC-nek megfelelő értékre van állítva. Ezekről a tulajdonságokról további információt a CppProperties sémahivatkozásában talál.
Ha minden megfelelően működik, az IntelliSense a GCC-fejlécekből jelenik meg, amikor egy típus fölé viszi az egérmutatót:
IntelliSense-diagnosztika engedélyezése
Ha nem látja a várt IntelliSense-t, hibaelhárításhoz lépjen az Eszközök>beállításai>szövegszerkesztő>C/C++>Speciális elemre, és állítsa be a Naplózástrueengedélyezése lehetőséget. Első lépésként próbálja meg 5-ösre állítani a naplózási szintet , a naplózási szűrőket pedig 8-ra.
A kimenet az Kimeneti ablakba van irányítva, és látható, amikor a *Kimenet megjelenítése: Visual C++ Napló* menüpontot választja. A kimenet tartalmazza többek között az IntelliSense által használni kívánt tényleges elérési utak listáját. Ha az elérési utak nem egyeznek a CppProperties.jsonlévőkkel, zárja be a mappát, és törölje a gyorsítótárazott böngészési adatokat tartalmazó .vs almappát.
Buildelési feladatok definiálása tasks.vs.json
Az aktuális munkaterületen lévő fájlok buildszkriptjeinek vagy egyéb külső műveleteinek automatizálásához közvetlenül az IDE-ben futtathatja őket feladatként. Új feladat konfigurálásához kattintson a jobb gombbal egy fájlra vagy mappára, és válassza a Feladatok konfigurálása lehetőséget.
Ez létrehozza (vagy megnyitja) a tasks.vs.json fájlt abban a .vs mappában, amelyet a Visual Studio a gyökérprojekt mappájában hoz létre. A fájl tetszőleges feladatát definiálhatja, majd meghívhatja a Megoldáskezelő helyi menüjéből. A GCC-példa folytatásához az alábbi kódrészlet egy teljes tasks.vs.json fájlt jelenít meg egyetlen feladatként, amely meghívja a g++.exe egy projekt létrehozásához. Tegyük fel, hogy a projekt egyetlen hello.cpp nevű fájlt tartalmaz.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "build hello",
"appliesTo": "/",
"type": "default",
"command": "g++",
"args": [
"-g",
"-o",
"hello",
"hello.cpp"
]
}
]
}
A JSON-fájl a .vs almappába kerül. A mappa megtekintéséhez kattintson az Összes fájl megjelenítése gombra a Megoldáskezelő tetején. A feladat futtatásához kattintson a jobb gombbal a Megoldáskezelő gyökércsomópontjára, és válassza a hello felépítése lehetőséget. Amikor a feladat befejeződött, egy új fájlnak kell megjelennie, hello.exe a Megoldáskezelőben.
Sokféle feladatot definiálhat. Az alábbi példa egy tasks.vs.json fájlt mutat be, amely egyetlen feladatot határoz meg.
taskLabel A helyi menüben megjelenő nevet határozza meg.
appliesTo meghatározza, hogy mely fájlokon hajtható végre a parancs. A command tulajdonság a COMSPEC környezeti változóra hivatkozik, amely azonosítja a konzol elérési útját ( windowsoscmd.exe ). Ön is hivatkozhat a CppProperties.json vagy CMakeSettings.jsondeklarált környezeti változókra. A args tulajdonság megadja a meghívandó parancssort. A ${file} makró lekéri a kijelölt fájlt a Megoldáskezelőben. Az alábbi példa az aktuálisan kijelölt .cpp fájlnevét jeleníti meg.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "Echo filename",
"appliesTo": "*.cpp",
"type": "command",
"command": "${env.COMSPEC}",
"args": ["echo ${file}"]
}
]
}
Atasks.vs.jsonmentése után kattintson a jobb gombbal a mappában lévő .cpp fájlra, válassza az Echo fájlnevet a helyi menüből, és tekintse meg a fájl nevét a Kimenet ablakban.
További információ: Tasks.vs.json sémahivatkozás.
Hibakeresési paraméterek konfigurálása launch.vs.json
A program parancssori argumentumainak és hibakeresési utasításainak testreszabásához kattintson a jobb gombbal a végrehajtható fájlra a Megoldáskezelőben , és válassza a Hibakeresés és a Beállítások indítása lehetőséget. Ezzel megnyit egy meglévő launch.vs.json fájlt, vagy ha nincs ilyen, létrehoz egy új fájlt, amely minimális indítási beállításokkal rendelkezik. Először kiválaszthatja, hogy milyen típusú hibakeresési munkamenetet szeretne konfigurálni. MinGw-w64-projekt hibakereséséhez a C/C++ Launch for MinGW/Cygwin (gdb) lehetőséget választjuk. Ez létrehoz egy indítási konfigurációt gdb.exe használatával, feltételezett alapértelmezett értékekkel. Az alapértelmezett értékek egyike a .MINGW_PREFIX Helyettesítheti a kifejezett elérési utat (az alább látható módon), vagy definiálhatja a(z) MINGW_PREFIX tulajdonságot:
{
"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
}
]
}
A hibakeresés megkezdéséhez válassza ki a végrehajtható fájlt a hibakeresési legördülő listában, majd kattintson a zöld nyílra:
Ekkor megjelenik az Inicializálás hibakereső párbeszédpanelje, majd a programot futtató külső konzolablak.
További információ: launch.vs.json sémahivatkozás.
Egyéb végrehajtható elemek indítása
A számítógépen futtatható összes végrehajtható fájl indítási beállításait megadhatja. Az alábbi példa elindítja a 7za fájlt, és további argumentumokat határoz meg a JSON-tömbhöz args való hozzáadásukkal:
{
"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" ]
}
]
}
A fájl mentésekor az új konfiguráció megjelenik a Hibakeresési cél legördülő listában, és kiválaszthatja a hibakereső elindításához. Tetszőleges számú végrehajtható fájlhoz tetszőleges számú hibakeresési konfigurációt hozhat létre. Ha most lenyomja az F5 billentyűt, a hibakereső elindul, és eléri a már beállított töréspontot. Az összes ismerős hibakereső ablak és azok funkciói már elérhetők.