Udostępnij za pośrednictwem


CMakePresets.json i CMakeUserPresets.json mapy dostawców firmy Microsoft

Narzędzie CMake obsługuje dwa pliki CMakePresets.json i CMakeUserPresets.json, które umożliwiają użytkownikom określanie typowych opcji konfiguracji, kompilacji i testowania oraz udostępniania ich innym osobom.

CMakePresets.json i CMakeUserPresets.json może służyć do napędu CMake w programie Visual Studio, w programie Visual Studio Code, w potoku ciągłej integracji i z wiersza polecenia.

CMakePresets.json program ma na celu zapisanie kompilacji obejmujących cały projekt i CMakeUserPresets.json jest przeznaczony dla deweloperów do zapisywania własnych kompilacji lokalnych. Schemat obu plików jest identyczny.

CMakePresets.json i CMakeUserPresets.json dostawca pomocy technicznej mapuje na przechowywanie informacji specyficznych dla dostawcy. Firma Microsoft obsługuje dwie mapy dostawców z opcjami specyficznymi dla programów Visual Studio i Visual Studio Code. W tym miejscu dokumentujemy dwa mapy dostawców firmy Microsoft i makra dostawcy. Aby uzyskać więcej informacji na temat pozostałej części schematu, zobacz oficjalną dokumentację narzędzia CMake. Zawiera on informacje na temat konfigurowania ustawień wstępnych, ustawień wstępnych kompilacji i ustawień wstępnych testów.

Aby uzyskać więcej informacji na temat używania w programie Visual Studio, zobacz Konfigurowanie i kompilowanie przy użyciu CMakePresets.json ustawień wstępnych narzędzia CMake w programie Visual Studio

Aby uzyskać więcej informacji na temat używania w programie Visual Studio Code, zobacz Konfigurowanie i kompilowanie przy użyciu CMakePresets.json ustawień wstępnych narzędzia CMake w programie VS Code

Mapa dostawcy Ustawienia programu Visual Studio

Jedna mapa dostawcy z identyfikatorem URI microsoft.com/VisualStudioSettings/CMake/<version> dostawcy jest dozwolona na konfigurowanie ustawień wstępnych i zawiera opcje specyficzne dla integracji narzędzia CMake w programach Visual Studio i Visual Studio Code. Wszystkie opcje na mapie dostawcy mają zastosowanie do programu Visual Studio. Opcje stosowane zarówno do programu Visual Studio, jak i programu Visual Studio Code zostały jawnie oznaczone.

Wszystkie ustawienia na mapie dostawcy Ustawienia programu Visual Studio są opcjonalne i dziedziczone z sekcji Konfigurowanie ustawień wstępnych określonych przez inherits klucz. Tylko opcje, które zostały zmodyfikowane, są zapisywane w pliku. Mapa dostawcy Ustawienia programu Visual Studio jest obsługiwana przez CMakePresets.json elementy i CMakeUserPresets.json.

Opcje w mapie dostawcy Ustawienia programu Visual Studio nie mają wpływu na konstrukcję wiersza polecenia CMake lub CTest. Jest tak, aby ten sam CMakePresets.json plik mógł służyć do dysków CMake z programem Visual Studio, Visual Studio Code i z wiersza polecenia. Wyjątki to opcje cacheRoot i cmakeGenerateCommand . Te opcje są specyficzne dla scenariusza Otwórz istniejącą pamięć podręczną w programie Visual Studio i nie można ich odtworzyć z poziomu wiersza polecenia.

Ustawienie opis
hostOS Tablica obsługiwanych systemów operacyjnych. Akceptowane wartości to Windows, Linuxi macOS.

Wartość hostOS jest używana przez program Visual Studio i program Visual Studio Code w celu ukrycia ustawień wstępnych, które nie mają zastosowania do systemu operacyjnego systemu docelowego i zapewniają lepsze środowisko użytkownika.

Jeśli hostOS nie zostanie określony, program Visual Studio i program Visual Studio Code zawsze będą wyświetlać wszystkie ustawienia wstępne konfiguracji do wyboru. To pole może być również ciągiem, który jest odpowiednikiem tablicy zawierającej jeden ciąg

Ta opcja jest obsługiwana zarówno przez program Visual Studio, jak i program Visual Studio Code.
intelliSenseMode Określa tryb używany do przetwarzania informacji funkcji IntelliSense w programie Visual Studio w formacie <target>-<toolset>-<arch>.

Zaakceptowane wartości:

android-clang-arm
android-clang-arm64
android-clang-x6
android-clang-x86
ios-clang-ar
ios-clang-arm64
ios-clang-x6
ios-clang-x86
linux-gcc-arm
linux-gcc-x64
linux-gcc-x86
windows-clang-arm
windows-clang-arm64
windows-clang-x64
windows-clang-x86
windows-msvc-arm
windows-msvc-arm64
windows-msvc-x64
windows-msvc-x86

Jeśli intelliSenseMode jest nieokreślony, program Visual Studio używa trybu IntelliSense zgodnego z określonymi kompilatorami i architekturą docelową. intelliSenseMode jest często używany do zapewniania ulepszonej funkcji IntelliSense na potrzeby kompilacji krzyżowej.

W programie Visual Studio 2019 należy jawnie określić tryb clang IntelliSense podczas kompilowania za pomocą języka clang lub clang-cl.
intelliSenseOptions Mapa dodatkowych opcji konfiguracji funkcji IntelliSense.

useCompilerDefaults: Element bool określający, czy używać domyślnego definiowania i dołączania ścieżek dla funkcji IntelliSense. Powinny być false tylko wtedy, gdy kompilatory używane nie obsługują argumentów w stylu gcc. Wartość domyślna to true.

additionalCompilerArgs: tablica dodatkowych opcji do kontrolowania funkcji IntelliSense w programie Visual Studio. Ta opcja obsługuje rozszerzanie makr.
enableMicrosoftCodeAnalysis Element bool , który umożliwia analizę kodu firmy Microsoft w programie Visual Studio podczas kompilowania za pomocą cl polecenia lub clang-cl. Wartość domyślna to false.
codeAnalysisRuleset Określa zestaw reguł do użycia podczas uruchamiania analizy kodu firmy Microsoft w programie Visual Studio. Możesz użyć ścieżki do pliku zestawu reguł lub nazwy pliku zestawu reguł zainstalowanego w programie Visual Studio. Ta opcja obsługuje rozszerzanie makr.
disableExternalAnalysis Element bool określający, czy analiza kodu powinna być uruchamiana w nagłówkach zewnętrznych w programie Visual Studio.
codeAnalysisExternalRuleset Określa zestaw reguł do użycia podczas uruchamiania analizy kodu firmy Microsoft w nagłówku zewnętrznym w programie Visual Studio. Możesz użyć ścieżki do pliku zestawu reguł lub nazwy pliku zestawu reguł zainstalowanego w programie Visual Studio. Ta opcja obsługuje rozszerzanie makr.
enableClangTidyCodeAnalysis Wartość logiczna, która umożliwia analizę kodu w języku clang-tidy w programie Visual Studio podczas kompilowania za pomocą clang-clpolecenia . Wartość domyślna to false.
clangTidyChecks Rozdzielona przecinkami lista ostrzeżeń przekazywanych do języka clang-tidy podczas uruchamiania analizy kodu clang-tidy w programie Visual Studio. Symbole wieloznaczne są dozwolone, a - prefiks spowoduje usunięcie kontroli.
cacheRoot Określa ścieżkę do pamięci podręcznej CMake. Ten katalog powinien zawierać istniejący CMakeCache.txt plik. Ten klucz jest obsługiwany tylko przez scenariusz Otwórz istniejącą pamięć podręczną w programie Visual Studio. Ta opcja obsługuje rozszerzanie makr.
cmakeGenerateCommand Narzędzie wiersza polecenia (określone jako program wiersza polecenia i argumenty, gencache.bat debugna przykład ), aby wygenerować pamięć podręczną CMake. To polecenie jest uruchamiane w powłoce przy użyciu określonego środowiska ustawień wstępnych po wywołaniu konfiguracji narzędzia CMake. Ten klucz jest obsługiwany tylko przez scenariusz Otwórz istniejącą pamięć podręczną w programie Visual Studio. Ta opcja obsługuje rozszerzanie makr.

Mapa zdalnego dostawcy Ustawienia programu Visual Studio

Jedna mapa dostawcy z identyfikatorem URI microsoft.com/VisualStudioRemoteSettings/CMake/<version> dostawcy jest dozwolona na konfigurowanie ustawień wstępnych i zawiera opcje specyficzne dla programowania zdalnego w programie Visual Studio. Programowanie zdalne oznacza wywoływanie narzędzia CMake w zdalnym połączeniu SSH lub WSL. Żadna z opcji w mapie zdalnego Ustawienia dostawcy programu Visual Studio nie ma zastosowania do programu Visual Studio Code.

Wszystkie ustawienia na mapie zdalnego Ustawienia dostawcy programu Visual Studio są opcjonalne i dziedziczone z konfiguracji ustawień wstępnych określonych przez inherits klucz. Tylko opcje, które zostały zmodyfikowane, są zapisywane w pliku. Mapa zdalnego Ustawienia dostawcy programu Visual Studio jest obsługiwana przez CMakePresets.json elementy i CMakeUserPresets.json.

Opcje w mapie dostawcy Ustawienia programu Visual Studio nie mają wpływu na konstrukcję wiersza polecenia CMake lub CTest. Jest tak, aby ten sam CMakePresets.json plik mógł służyć do dysków CMake z programem Visual Studio, Visual Studio Code i z wiersza polecenia.

Wiele opcji na mapie zdalnego Ustawienia dostawcy programu Visual Studio jest ignorowanych podczas określania wartości docelowej WSL1. Jest to spowodowane tym, że zestaw narzędzi WSL1 wykonuje wszystkie polecenia lokalnie i opiera się na dyskach z systemem Windows zainstalowanych w folderze /mnt w celu uzyskania dostępu do lokalnych plików źródłowych z WSL1. Nie jest wymagana żadna kopia pliku źródłowego. Opcje ignorowane podczas określania wartości docelowej WSL1 zostały jawnie oznaczone.

Ustawienie opis
sourceDir Ścieżka do katalogu w systemie zdalnym, w którym zostanie skopiowany projekt. Wartość domyślna to $env{HOME}/.vs/$ms{projectDirName}. Ta opcja obsługuje rozszerzanie makr.

W scenariuszach kopiowania zdalnego makro ${sourceDir} oblicza katalog źródłowy projektu w systemie zdalnym, a nie katalog źródłowy projektu na maszynie z systemem Windows. Scenariusze kopiowania zdalnego obejmują kierowanie zdalnego połączenia SSH. W takich przypadkach katalog źródłowy projektu w systemie zdalnym jest określany przez wartość sourceDir w mapie zdalnego Ustawienia dostawcy programu Visual Studio. Ta opcja jest ignorowana podczas określania wartości docelowej WSL1.
copySources Jeśli trueprogram Visual Studio skopiuje źródła z systemu Windows do systemu zdalnego. Ustaw wartość na false wartość , jeśli samodzielnie zarządzasz synchronizacją plików. Wartość domyślna to true. Ta opcja jest ignorowana podczas określania wartości docelowej WSL1.
copySourcesOptions Obiekt opcji związanych z kopią źródłową z systemu Windows do systemu zdalnego. Ten obiekt jest ignorowany podczas określania wartości docelowej WSL1.

copySourcesOptions.exclusionList: lista ścieżek do wykluczenia podczas kopiowania plików źródłowych do systemu zdalnego. Ścieżka może być nazwą pliku lub katalogu albo ścieżką względną z katalogu głównego kopii. Wartość domyślna to [ ".vs", ".git", "out" ]. Ta opcja obsługuje rozszerzanie makr.

copySourcesOptions.method: metoda używana do kopiowania plików źródłowych do systemu zdalnego. Akceptowane wartości to rsync i sftp. Wartość domyślna to rsync.

copySourcesOptions.concurrentCopies: liczba współbieżnych kopii używanych podczas synchronizacji źródeł do systemu zdalnego. Wartość domyślna to 5.

copySourcesOptions.outputVerbosity: poziom szczegółowości operacji kopiowania źródłowego do systemu zdalnego. Akceptowane poziomy to Normal, Verbosei Diagnostic. Wartość domyślna to Normal.
rsyncCommandArgs Lista argumentów wiersza polecenia przekazanych do rsyncelementu . Wartość domyślna to [ "-t", "--delete", "--delete-excluded" ]. Ta opcja obsługuje rozszerzanie makr i jest ignorowana podczas określania wartości docelowej WSL1.
copyBuildOutput Określa, czy skopiować dane wyjściowe kompilacji z systemu zdalnego z powrotem do systemu Windows. Wartość domyślna to false. Ta opcja jest ignorowana podczas określania wartości docelowej WSL1.
copyOptimizations Obiekt opcji związanych z optymalizacjami kopiowania źródłowego. Te opcje są ignorowane podczas określania wartości docelowej WSL1.

copyOptimizations.maxSmallChange: maksymalna liczba plików do skopiowania przy użyciu narzędzia sftp zamiast rsync. Wartość domyślna to 10.

copyOptimizations.useOptimizations: określa optymalizacje kopiowania używane. Akceptowane wartości nie są optymalizacjami kopiowania (None), optymalizacjami rsync tylko (RsyncOnly) lub optymalizacjami rsync i sftp (RsyncAndSftp). Wartość domyślna to RsyncAndSftp.

copyOptimizations.rsyncSingleDirectoryCommandArgs: Lista argumentów wiersza polecenia przekazywanych do narzędzia rsync podczas kopiowania zawartości pojedynczego katalogu do systemu zdalnego. Wartość domyślna to [ "-t", "-d" ]. Ta opcja obsługuje rozszerzanie makr.
copyAdditionalIncludeDirectoriesList Lista ścieżek do zdalnych katalogów nagłówków, które mają być kopiowane lokalnie dla funkcji IntelliSense. Ta opcja obsługuje rozszerzanie makr.
copyExcludeDirectoriesList Lista ścieżek do zdalnych katalogów nagłówków, które nie mają być kopiowane lokalnie dla funkcji IntelliSense. Ta opcja obsługuje rozszerzanie makr.
forceWSL1Toolset Jeśli trueprogram Visual Studio będzie zawsze używać zestawu narzędzi WSL1 podczas określania wartości docelowej WSL z programu Visual Studio. Zestaw narzędzi WSL1 wykonuje wszystkie polecenia lokalnie i opiera się na dyskach z systemem Windows zainstalowanych w folderze /mnt w celu uzyskania dostępu do lokalnych plików źródłowych z programu WSL. Te opcje mogą być wolniejsze z WSL2. Wartość domyślna to false.

Zestaw narzędzi WSL1 będzie zawsze używany w programie Visual Studio 2019 w wersji 16.10. Ta opcja będzie odpowiednia po udostępnieniu natywnej obsługi protokołu WSL2.

Zdalne zdarzenia przed kompilacją i po kompilacji

Opcje elementu remotePrebuildEvent i remotePostbuildEvent zostały wycofane z przyjęciem elementu CMakePresets.json.

Zakoduj zdarzenia wstępnego kompilowania, wstępnego łączenia i po kompilacji przy CMakeLists.txt użyciu polecenia add_custom_command. Zapewnia to takie samo zachowanie podczas kompilowania przy użyciu programu Visual Studio i z poziomu wiersza polecenia.

Jeśli potrzebujesz zachowania specyficznego dla programu Visual Studio, możesz dodać niestandardowe zadanie zdalne w programie tasks.vs.json. Aby rozpocząć, kliknij prawym przyciskiem myszy katalog główny CMakeLists.txt w Eksplorator rozwiązań w widoku folderu i wybierz pozycję Konfiguruj zadania. Następnie możesz dodać nowe zadanie zdalne do pliku tasks.vs.json .

Następujące zadanie zdalne tworzy katalog o nazwie test w zdalnym systemie Linux:

{
      "taskLabel": "mkdir",
      "appliesTo": "CMakeLists.txt",
      "type": "remote",
      "command": "mkdir test",
      "remoteMachineName": "localhost"
  }

Kliknij prawym przyciskiem myszy dowolny CMakeLists.txt i wybierz opcję mkdir , aby wykonać to zadanie.

Wartość remoteMachineName musi być zgodna z nazwą hosta połączenia w Menedżerze Połączenie ion.

Makra dostawcy firmy Microsoft

Oba mapy Visual Studio Settings dostawców firmy Microsoft i Visual Studio Remote Settingsobsługują wszystkie makra zdefiniowane przez narzędzie CMake. Nasze mapy dostawcy obsługują wszystkie makra zdefiniowane przez narzędzie CMake. Aby uzyskać więcej informacji, zobacz rozszerzenie makra cmake-presets. Wszystkie makra i zmienne środowiskowe są rozszerzane przed przekazaniem do narzędzia CMake.

Program Visual Studio obsługuje makra dostawcy z prefiksem ms. Makra dostawcy firmy Microsoft mogą być używane tylko w mapach dostawców firmy Microsoft. Narzędzie CMake nie może używać ustawień wstępnych, które mają makra dostawcy poza mapą dostawcy.

Macro opis
$ms{projectDirName} Oblicza nazwę otwartego folderu w programie Visual Studio. To makro służy do ustawiania wartości domyślnej sourceDir w scenariuszach kopiowania zdalnego. To makro nie jest obsługiwane przez program Visual Studio Code. Użycie w zamian parametru ${sourceDirName}.

Zmienne środowiskowe

Macro opis
$env{<variable-name>}
$penv{<variable-name>}
Odwołuje się do zmiennych środowiskowych przy użyciu tej składni obsługiwanej przez narzędzie CMake. Aby uzyskać więcej informacji, zobacz rozszerzenie makra cmake-presets.

Przestarzałe makra

Kilka makr obsługiwanych przez CMakeSettings.json program zostało przestarzałych wraz z przyjęciem programu CMakePresets.json.

Użyj makr obsługiwanych przez narzędzie CMake, aby skonstruować ścieżki plików. Gdy używasz makr, zapewnia to, że ten sam CMakePresets.json plik działa w programie Visual Studio i w wierszu polecenia.

Przestarzałe makro Zalecenie
${projectFile} ${sourceDir}/CMakeLists.txt
${thisFile} ${sourceDir}/CMakePresets.json

Zaakceptowana składnia powłoki

$env{HOME} Użyj składni, aby odwołać $HOME się podczas konstruowania ścieżek systemu Linux w mapach dostawców firmy Microsoft.