Konfigurera ett Linux CMake-projekt i Visual Studio

Linux-stöd är tillgängligt i Visual Studio 2017 och senare. Om du vill se dokumentationen för dessa versioner anger du listrutan Version ovanför innehållsförteckningen till Visual Studio 2017 eller Visual Studio 2019.

Det här avsnittet beskriver hur du lägger till en Linux-konfiguration i ett CMake-projekt som riktar sig till antingen ett fjärranslutet Linux-system eller Windows-undersystem för Linux (WSL). Den fortsätter serien som började med Skapa ett Linux CMake-projekt i Visual Studio. Om du använder MSBuild läser du i stället Konfigurera ett Linux MSBuild-projekt i Visual Studio

Lägga till en Linux-konfiguration

En konfiguration kan användas för att rikta in sig på olika plattformar (Windows, WSL, ett fjärrsystem) med samma källkod. En konfiguration används också för att ange kompilatorer, skicka miljövariabler och anpassa hur CMake anropas. Filen CMakeSettings.json anger vissa eller alla egenskaper som anges i Anpassa CMake-inställningar, plus andra egenskaper som styr bygginställningarna på linux-fjärrdatorn.

Om du vill ändra CMake-standardinställningarna i Visual Studio 2017 väljer du CMake>Ändra CMake-inställningar>CMakeLists.txt på huvudmenyn. Du kan också högerklicka på CMakeLists.txt i Solution Explorer och välja Ändra CMake-inställningar. Visual Studio skapar sedan en ny CMakeSettings.json fil i rotprojektmappen. Om du vill göra ändringar öppnar du filen och ändrar den direkt. Mer information finns i Anpassa CMake-inställningar.

Standardkonfigurationen för Linux-Debug i Visual Studio 2017 (och Visual Studio 2019 version 16.0) ser ut så här:

{
  "configurations": [
    {
      "name": "Linux-Debug",
      "generator": "Unix Makefiles",
      "remoteMachineName": "${defaultRemoteMachineName}",
      "configurationType": "Debug",
      "remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
      "cmakeExecutable": "/usr/local/bin/cmake",
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
      "remoteInstallRoot": "/var/tmp/build/${workspaceHash}/install/${name}",
      "remoteCopySources": true,
      "remoteCopySourcesOutputVerbosity": "Normal",
      "remoteCopySourcesConcurrentCopies": "10",
      "remoteCopySourcesMethod": "rsync",
      "remoteCopySourcesExclusionList": [
        ".vs",
        ".git"
      ],
      "rsyncCommandArgs": "-t --delete --delete-excluded",
      "remoteCopyBuildOutput": false,
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [
        "linux_x64"
      ]
    }
  ]
}

Om du vill ändra CMake-standardinställningarna i Visual Studio 2019 eller senare öppnar du listrutan Konfiguration i huvudverktygsfältet och väljer Hantera konfigurationer.

Skärmbild som visar CMake Manage Configurations markerat i listrutan Konfiguration.

Det här kommandot öppnar CMake-inställningsredigeraren, som du kan använda för att redigera filenCMakeSettings.json i rotprojektmappen. Du kan också öppna filen med JSON-redigeraren genom att klicka på knappen Redigera JSON uppe till höger i dialogrutan CMake-inställningar . Mer information finns i Anpassa CMake-inställningar.

Standardkonfigurationen Linux-Debug i Visual Studio 2019 version 16.1 och senare ser ut så här:

{
  "configurations": [
    {
      "name": "Linux-GCC-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "cmakeExecutable": "cmake",
      "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [ "linux_x64" ],
      "remoteMachineName": "${defaultRemoteMachineName}",
      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
      "remoteCopySources": true,
      "rsyncCommandArgs": "-t --delete --delete-excluded",
      "remoteCopyBuildOutput": false,
      "remoteCopySourcesMethod": "rsync",
      "variables": []
    }
  ]
}

I Visual Studio 2019 version 16.6 eller senare är Ninja standardgeneratorn för konfigurationer som riktar sig mot ett fjärrsystem eller WSL, till skillnad från Unix Makefiles. Mer information finns i det här inlägget på C++-teamets blogg.

Mer information om de här inställningarna finns iCMakeSettings.json referens.

När du gör en kompilering:

  • Om du riktar in dig på ett fjärrsystem väljer Visual Studio det första fjärrsystemet i listan underVerktygsalternativ>>Cross Platform>Connection Manager som standard för fjärrmål.
  • Om inga fjärranslutningar hittas uppmanas du att skapa en. Mer information finns i Ansluta till din fjärranslutna Linux-dator.

Välj ett Linux-mål

När du öppnar en CMake-projektmapp parsar Visual Studio CMakeLists.txt-filen och anger ett Windows-mål för x86-Debug. Om du vill rikta in dig på ett fjärranslutet Linux-system ändrar du projektinställningarna baserat på Linux-kompilatorn. Om du till exempel använder GCC i Linux och kompilerar med felsökningsinformation väljer du: Linux-GCC-Debug eller Linux-GCC-Release.

Om du anger ett Linux-fjärrmål kopieras källan till fjärrsystemet.

När du har valt ett mål körs CMake automatiskt i Linux-systemet för att generera CMake-cachen för projektet:

Skärmbild av Visual Studio som visar utdata från Generera CMake-cache i Linux.

Windows-undersystem för Linux som mål

Om du riktar in dig på Windows-undersystem för Linux (WSL) behöver du inte lägga till någon fjärranslutning.

Om du vill rikta in dig på WSL väljer du Hantera konfigurationer i listrutan konfiguration i huvudverktygsfältet:

Listrutan CMake-konfigurationer med Hantera konfigurationer vald

Fönstret CMakeSettings.json visas.

Dialogrutan CMake-inställningar med plusknappen markerad som lägger till den valda konfigurationen, som är Linux-GCC-debug.

Tryck på Lägg till konfiguration (den gröna +-knappen) och välj sedan Linux-GCC-Debug eller Linux-GCC-Release om du använder GCC. Använd Clang-varianterna om du använder verktygsuppsättningen Clang/LLVM. Spara konfigurationen genom att trycka på Välj och sedan på Ctrl+S .

Visual Studio 2019 version 16.1 När du riktar in dig på WSL behöver Visual Studio inte kopiera källfiler och underhålla två synkrona kopior av byggträdet eftersom kompilatorn i Linux har direkt åtkomst till källfilerna i det monterade Windows-filsystemet.

IntelliSense

Korrekt C++ IntelliSense kräver åtkomst till C++-huvudena som refereras av C++-källfilerna. Visual Studio använder automatiskt rubrikerna som refereras av ett CMake-projekt från Linux till Windows för att ge en fullständig IntelliSense-upplevelse. Mer information finns i IntelliSense för fjärrhuvuden.

Lokal inställning

Språkinställningarna för Visual Studio sprids inte till Linux-mål eftersom Visual Studio inte hanterar eller konfigurerar installerade paket. Meddelanden som visas i utdatafönstret, till exempel byggfel, visas med hjälp av språket och nationella inställningar för Linux-målet. Du måste konfigurera dina Linux-mål för önskat språk.

Fler inställningar

Använd följande inställningar för att köra kommandon på Linux-systemet före och efter skapandet och före CMake-genereringen. Värdena kan vara valfritt kommando som är giltigt i fjärrsystemet. Utdata skickas tillbaka till Visual Studio.

{
      "remotePrebuildCommand": "",
      "remotePreGenerateCommand": "",
      "remotePostbuildCommand": "",
}

Nästa steg

Konfigurera CMake-felsökningssessioner

Se även

Arbeta med projektegenskaper
Anpassa CMake-inställningar
fördefinierade konfigurationsreferens för CMake