Dela via


Anpassa CMake-bygginställningar

Visual Studio använder en CMake-konfigurationsfil för att driva CMake-generering och bygge. CMakePresets.json stöds av Visual Studio 2019 version 16.10 eller senare och är den rekommenderade CMake-konfigurationsfilen. CMakePresets.json stöds direkt av CMake och kan användas för att driva CMake-generering och kompilering från Visual Studio, från VS Code, i en pipeline för kontinuerlig integrering och från kommandoraden i Windows, Linux och Mac. Mer information om CMakePresets.jsonfinns i Konfigurera och skapa med CMake-förinställningar.

Om du underhåller projekt som använder en CMakeSettings.json fil för CMake-byggkonfiguration tillhandahåller Visual Studio 2019 och senare versioner en CMake-inställningsredigerare. Med redigeraren kan du lägga till CMake-konfigurationer och enkelt anpassa deras inställningar. Det är avsett att vara ett enklare alternativ till att redigera CMakeSettings.json filen manuellt. Men om du föredrar att redigera filen direkt kan du välja länken Redigera JSON längst upp till höger i redigeraren.

Om du vill öppna CMake-inställningsredigeraren väljer du listrutan Konfiguration i huvudverktygsfältet och väljer Hantera konfigurationer.

Skärmbild av listrutan CMake-konfiguration. Hantera konfigurationer är markerat.

Nu visas inställningsredigeraren med de installerade konfigurationerna till vänster.

Skärmbild av CMake-inställningsredigeraren.

I den vänstra rutan visas de installerade konfigurationerna (x86-Debug). I det högra fönstret visas inställningarna för den valda konfigurationen. Inställningarna inkluderar konfigurationsnamnet, konfigurationstypen (inställd på Felsökning), verktygsuppsättningen (inställd på msvc_x86), CMake-verktygskedjans fil (tom), byggroten (innehåller ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), CMake-kommandoargument (tomma) och byggkommandoargument (-v).

Visual Studio tillhandahåller en x64-Debug konfiguration som standard. Du kan lägga till fler konfigurationer genom att välja det gröna plustecknet. Inställningarna som visas i redigeraren kan variera beroende på vilken konfiguration som har valts.

De alternativ som du väljer i redigeraren skrivs till en fil med namnet CMakeSettings.json. Den här filen innehåller kommandoradsargument och miljövariabler som skickas till CMake när du skapar projekten. Visual Studio modifierar aldrig CMakeLists.txt automatiskt; genom att använda CMakeSettings.json kan du anpassa byggprocessen via Visual Studio samtidigt som CMake-projektfilerna lämnas orörda, så att andra i ditt team kan utnyttja dem med de verktyg de använder.

Allmänna inställningar för CMake

Följande inställningar är tillgängliga under rubriken Allmänt :

Konfigurationsnamn

Motsvarar namninställningen . Det här namnet visas i listrutan C++-konfiguration. Du kan använda makrot ${name} för att skapa andra egenskapsvärden, till exempel sökvägar.

Konfigurationstyp

Motsvarar inställningen configurationType . Definierar byggkonfigurationstypen för den valda generatorn. Värden som stöds för närvarande är Felsökning, MinSizeRel, Release och RelWithDebInfo. Den mappar till CMAKE_BUILD_TYPE.

Verktygsuppsättning

Motsvarar inställningen inheritedEnvironments . Definierar den kompilatormiljö som används för att skapa den valda konfigurationen. Värden som stöds beror på typen av konfiguration. Om du vill skapa en anpassad miljö väljer du länken Redigera JSON i det övre högra hörnet i inställningsredigeraren och redigerar CMakeSettings.json filen direkt.

CMake-verktygskedjafil

Sökväg till CMake-verktygskedjans fil. Den här sökvägen skickas till CMake som "-DCMAKE_TOOLCHAIN_FILE = <filepath>. Verktygskedjans filer anger platser för kompilatorer och verktygskedja samt annan målplattform och kompilatorrelaterad information. Visual Studio använder som standard vcpkg-verktygskedjefilen om den här inställningen är ospecificerad.

Skapa rot

Motsvarar buildRoot. Mappar till CMAKE_BINARY_DIRoch anger var CMake-cachen ska skapas. Den angivna mappen skapas om den inte finns.

Kommandoargument

Följande inställningar är tillgängliga under rubriken Kommandoargument :

CMake-kommandoargument

Motsvarar cmakeCommandArgs. Anger fler kommandoradsalternativ som skickas till CMake.

Skapa kommandoargument

Motsvarar buildCommandArgs. Anger fler växlar som ska skickas till det underliggande byggsystemet. Om du till exempel skickar -v när du använder Ninja-generatorn tvingar du Ninja att mata ut kommandorader.

CTest-kommandoargumenten

Motsvarar ctestCommandArgs. Anger fler kommandoradsalternativ som ska skickas till CTest när du kör tester.

Allmänna inställningar för fjärrversioner

Följande inställningar är också tillgängliga för konfigurationer som Linux som använder fjärrversioner:

rsync kommandoargument

Extra kommandoradsalternativ skickades till rsync, ett snabbt, mångsidigt filkopieringsverktyg.

CMake-variabler och cacheminne

Med de här inställningarna kan du ange CMake-variabler och spara dem i CMakeSettings.json. De skickas till CMake vid byggtiden och åsidosätter de värden som finns i CMakeLists.txt filen. Du kan använda det här avsnittet på samma sätt som du kan använda CMakeGUI för att visa en lista över alla CMake-variabler som är tillgängliga för redigering. Välj knappen Spara och generera cache för att visa en lista över alla CMake-variabler som är tillgängliga för redigering, inklusive avancerade variabler (enligt CMakeGUI). Du kan filtrera listan efter variabelnamn.

Motsvarar variabler. Innehåller ett namn-värdepar med CMake-variabler som skickas som -D name=value till CMake. Om dina CMake-projektversionsinstruktioner anger tillägg av variabler direkt till CMake-cachefilen rekommenderar vi att du lägger till dem här i stället.

Avancerade inställningar

CMake-generator

Motsvarar generatorn. Mappar till CMake-växeln -G och anger vilken CMake-generator som ska användas. Den här egenskapen kan också användas som makro, , ${generator}när du skapar andra egenskapsvärden. Visual Studio stöder för närvarande följande CMake-generatorer:

  • "Ninja"
  • Unix Makefiles
  • "Visual Studio 16 2019"
  • "Visual Studio 16 2019 Win64"
  • "Visual Studio 16 2019 ARM"
  • "Visual Studio 15 2017"
  • "Visual Studio 15 2017 Win64"
  • "Visual Studio 15 2017 ARM"
  • "Visual Studio 14 2015"
  • "Visual Studio 14 2015 Win64"
  • "Visual Studio 14 2015 ARM"

Eftersom Ninja är utformad för snabba bygghastigheter i stället för flexibilitet och funktion anges den som standard. Vissa CMake-projekt kan dock inte byggas korrekt med hjälp av Ninja. Om detta inträffar kan du instruera CMake att generera ett Visual Studio-projekt i stället.

IntelliSense-läge

IntelliSense-läget som används av IntelliSense-motorn. Om inget läge har valts ärver Visual Studio läget från den angivna verktygsuppsättningen.

Installera katalog

Katalogen där CMake installerar mål. Mappar till CMAKE_INSTALL_PREFIX.

CMake-exekverbar fil

Den fullständiga sökvägen till det körbara CMake-programmet, inklusive filnamnet och filnamnstillägget. Det gör att du kan använda en anpassad version av CMake med Visual Studio. För fjärrversioner anger du CMake-platsen på fjärrdatorn.

Följande inställningar är också tillgängliga för konfigurationer som Linux som använder fjärrversioner:

Fjärrrot för CMakeLists.txt

Katalogen på fjärrdatorn som innehåller rotfilen CMakeLists.txt .

Fjärrinstallation root

Katalogen på fjärrdatorn där CMake installerar mål. Mappar till CMAKE_INSTALL_PREFIX.

Fjärrkopieringskällor

Anger om källfiler ska kopieras till fjärrdatorn och låter dig ange om du vill använda rsync eller sftp.

Redigera CMakeSettings.json direkt

Du kan också redigera CMakeSettings.json direkt för att skapa anpassade konfigurationer. Inställningsredigeraren har knappen Redigera JSON uppe till höger som öppnar filen för redigering.

I följande exempel visas en exempelkonfiguration som du kan använda som utgångspunkt:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON IntelliSense hjälper dig att redigera CMakeSettings.json filen:

Skärmbild av popup-fönstret CMake JSON IntelliSense i redigeraren.

JSON-redigeraren informerar dig också när du väljer inkompatibla inställningar.

Mer information om var och en av egenskaperna i filen finns iCMakeSettings.json schemareferens.

Visual Studio 2017 innehåller flera CMake-konfigurationer som definierar hur CMake anropas för att skapa CMake-cachen för ett visst projekt. Om du vill lägga till en ny konfiguration väljer du listrutan konfiguration i verktygsfältet och väljer Hantera konfigurationer:

Skärmbild av Hantera konfigurationer som valts i rullgardinsmenyn.

Du kan välja från listan över fördefinierade konfigurationer:

Lägg till konfiguration i dialogrutan CMake-inställningar med fördefinierade konfigurationer.

Första gången du väljer en konfiguration skapar Visual Studio en CMakeSettings.json fil i projektets rotmapp. Den här filen används för att återskapa CMake-cachefilen, till exempel efter en ren åtgärd.

Om du vill lägga till en annan konfiguration högerklickar du CMakeSettings.json och väljer Lägg till konfiguration.

Skärmbild av snabbmenyn med Lägg till konfiguration valt.

Du kan också redigera filen med CMake-inställningsredigeraren. Högerklicka på CMakeSettings.json i Solution Explorer och välj Redigera CMake-inställningar. Du kan också välja Hantera konfigurationer i listrutan konfiguration högst upp i redigeringsfönstret.

Du kan också redigera CMakeSettings.json direkt för att skapa anpassade konfigurationer. I följande exempel visas en exempelkonfiguration som du kan använda som utgångspunkt:

    {
      "name": "x86-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": ""
    },

JSON IntelliSense hjälper dig att redigera CMakeSettings.json filen:

Skärmbild av popup-fönstret CMake JSON IntelliSense i redigeraren.

Popup-fönstret JSON IntelliSense för "configurations" visar bland annat buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType.

Mer information om var och en av egenskaperna i filen CMakeSettings.json finns i schemareferens.

Se även

CMake-projekt i Visual Studio
Konfigurera ett Linux CMake-projekt
Anslut till din fjärranslutna Linux-dator
Konfigurera CMake-felsökningssessioner
Distribuera, köra och felsöka ditt Linux-projekt
fördefinierade konfigurationsreferens för CMake