Projekty CMake w Visual Studio

CMake to wieloplatformowe narzędzie typu open source do definiowania procesów kompilacji uruchamianych na wielu platformach. W tym artykule założono, że znasz narzędzie CMake. Aby uzyskać więcej informacji na temat narzędzia CMake, zobacz dokumentację narzędzia CMake. Samouczek CMake jest dobrym punktem wyjścia, aby dowiedzieć się więcej.

Uwaga

Narzędzie CMake stało się coraz bardziej zintegrowane z Visual Studio w ciągu ostatnich kilku wersji. Aby zapoznać się z dokumentacją preferowanej wersji Visual Studio, użyj kontrolki selektora wersji. Znajduje się on w górnej części spisu treści na tej stronie.

natywna obsługa narzędzia CMake Visual Studio umożliwia edytowanie, kompilowanie i debugowanie projektów CMake w Windows, Podsystem Windows dla systemu Linux (WSL) i systemów zdalnych z tego samego wystąpienia Visual Studio. Pliki projektu CMake (takie jak CMakeLists.txt) są używane bezpośrednio przez Visual Studio na potrzeby IntelliSense i przeglądania. cmake.exejest wywoływany bezpośrednio przez Visual Studio dla konfiguracji i kompilacji narzędzia CMake.

Instalacja

Narzędzia CMake języka C++ dla Windows są instalowane w ramach opracowywania aplikacji klasycznych przy użyciu obciążeń C++ i Linux Development with C++. Zarówno narzędzia CMake języka C++ dla Windows, jak i programowanie w systemie Linux w języku C++ są wymagane do programowania w języku CMake na wielu platformach.

Screenshot of the Desktop development with C plus plus dropdown selected and the C plus plus C Make tools for Windows option called out.

Aby uzyskać więcej informacji, zobacz Instalowanie obciążenia C++ Linux w Visual Studio.

Integracja środowiska IDE

Po otwarciu folderu zawierającegoCMakeLists.txt plik następuje następująca sytuacja.

A screenshot of the Start Window in Visual Studio.

  • Visual Studio dodaje elementy narzędzia CMake do menu Project z poleceniami do wyświetlania i edytowania skryptów CMake.

  • Eksplorator rozwiązań wyświetla strukturę folderów i pliki.

  • Visual Studio uruchamia narzędzie CMake i generuje plik pamięci podręcznej CMake (CMakeCache.txt) dla konfiguracji domyślnej. Wiersz polecenia narzędzia CMake jest wyświetlany w oknie danych wyjściowych wraz z innymi danymi wyjściowymi narzędzia CMake.

  • W tle Visual Studio zaczyna indeksować pliki źródłowe w celu włączenia IntelliSense, przeglądania informacji, refaktoryzacji itd. Podczas pracy Visual Studio monitoruje zmiany w edytorze, a także na dysku w celu zachowania synchronizacji indeksu ze źródłami.

Uwaga

Począwszy od Visual Studio 2022 w wersji 17.1 (wersja zapoznawcza 2), jeśli najwyższy poziom CMakeLists.txt istnieje w podfolderze, a nie w katalogu głównym obszaru roboczego, zostanie wyświetlony monit o włączenie integracji narzędzia CMake. Aby uzyskać więcej informacji, zobacz Częściowa aktywacja narzędzia CMake.

Po pomyślnych pomyślnych generowaniu pamięci podręcznej narzędzia CMake można również wyświetlać projekty zorganizowane logicznie według elementów docelowych. Wybierz przycisk Wybierz widok na pasku narzędzi Eksplorator rozwiązań. Z listy w Eksplorator rozwiązań — Widoki wybierz pozycję Widok obiektów docelowych narzędzia CMake i naciśnij klawisz Enter, aby otworzyć widok obiektów docelowych:

Screenshot of the Solution Explorer Views window with the C Make Targets View highlighted.

Wybierz przycisk Pokaż wszystkie pliki w górnej części Eksplorator rozwiązań, aby wyświetlić wszystkie dane wyjściowe wygenerowane przez out/build/<config> narzędzie CMake w folderach.

CMakeLists.txt Użyj pliku w każdym folderze projektu tak samo jak w każdym projekcie CMake. Możesz określić pliki źródłowe, znaleźć biblioteki, ustawić opcje kompilatora i konsolidatora oraz określić inne informacje dotyczące systemu kompilacji. Aby uzyskać więcej informacji na temat usług językowych CMake udostępnianych przez Visual Studio, zobacz Edytowanie plików CMakeLists.txt.

Visual Studio używa pliku konfiguracji narzędzia CMake do generowania i kompilowania pamięci podręcznej CMake. Aby uzyskać więcej informacji, zobacz Konfigurowanie projektów CMake i Kompilowanie projektów CMake.

Aby przekazać argumenty do pliku wykonywalnego w czasie debugowania, możesz użyć innego pliku o nazwie launch.vs.json. Aby uzyskać więcej informacji na temat debugowania międzyplatformowych projektów CMake w Visual Studio, zobacz Debugowanie projektów CMake.

Większość funkcji języka Visual Studio i C++ jest obsługiwana przez projekty CMake w Visual Studio. Przykłady:

Uwaga

W przypadku innych rodzajów projektów Open Folder jest używany dodatkowy plik CppProperties.json JSON. Ten plik nie jest odpowiedni dla projektów CMake.

Konfigurowanie projektów CMake

Krok konfiguracji narzędzia CMake generuje system kompilacji projektu. Jest to równoważne wywołaniu cmake.exe z wiersza polecenia. Aby uzyskać więcej informacji na temat kroku konfiguracji narzędzia CMake, zobacz dokumentację narzędzia CMake.

Visual Studio używa pliku konfiguracji narzędzia CMake do generowania i kompilowania narzędzia CMake. CMakePresets.jsonjest obsługiwany przez program Visual Studio 2019 w wersji 16.10 lub nowszej i jest zalecanym plikiem konfiguracji narzędzia CMake. CMakePresets.jsonjest obsługiwany bezpośrednio przez narzędzie CMake i może służyć do generacji CMake i kompilowania z Visual Studio, z VS Code, w potoku ciągłej integracji i z wiersza polecenia w Windows, Linux i Mac. Aby uzyskać więcej informacji na temat CMakePresets.jsonprogramu , zobacz Konfigurowanie i kompilowanie przy użyciu ustawień wstępnych narzędzia CMake. CMakeSettings.jsonjest dostępny dla klientów korzystających z wcześniejszej wersji Visual Studio. Aby uzyskać więcej informacji na temat CMakeSettings.jsonprogramu , zobacz Dostosowywanie ustawień kompilacji narzędzia CMake.

Po wprowadzeniu znaczących zmian w pliku konfiguracji narzędzia CMake lub CMakeLists.txt pliku Visual Studio automatycznie uruchomi krok konfiguracji narzędzia CMake. Krok konfigurowania można wywołać ręcznie: wybierz pozycję Project > Skonfiguruj pamięć podręczną na pasku narzędzi. Możesz również zmienić preferencje konfiguracji w obszarze Narzędzia>Opcje>narzędzia CMake>Ogólne.

CMake configuration options.

Jeśli krok konfiguracji zakończy się bez błędów, informacje dostępne dyski C++ IntelliSense i usług językowych. Jest on również używany w operacjach kompilacji i debugowania.

Możesz również otworzyć istniejącą pamięć podręczną CMake w Visual Studio. Aby uzyskać więcej informacji, zobacz Otwieranie istniejącej pamięci podręcznej.

Dostosowywanie opinii i powiadomień dotyczących konfiguracji

Domyślnie większość komunikatów konfiguracji jest pomijana, chyba że wystąpi błąd. Aby wyświetlić wszystkie komunikaty, wybierz pozycję Narzędzia>Opcje>CMake>Włącz pełne dane wyjściowe diagnostyczne narzędzia CMake.

Możesz również wyłączyć wszystkie powiadomienia pamięci podręcznej CMake (złote paski), usuwając zaznaczenie opcji Pokaż powiadomienie pamięci podręcznej narzędzia CMake.

Rozwiązywanie problemów z błędami pamięci podręcznej CMake

Jeśli potrzebujesz więcej informacji na temat stanu pamięci podręcznej CMake w celu zdiagnozowania problemu, otwórz menu główne Project lub CMakeLists.txt menu kontekstowe w Eksplorator rozwiązań, aby uruchomić jedno z następujących poleceń:

  • Widok CMakeCache.txt otwiera CMakeCache.txt plik z katalogu kompilacji w edytorze. Wszelkie zmiany, które należy wprowadzić w tym CMakeCache.txt miejscu, zostaną wyczyszczone, jeśli wyczyścisz pamięć podręczną. Aby wprowadzić zmiany utrwalane po oczyszczeniu pamięci podręcznej, zobacz Dostosowywanie ustawień narzędzia CMake lub Konfigurowanie i kompilowanie przy użyciu ustawień Wstępnych narzędzia CMake.

  • Usuwanie pamięci podręcznej i ponowne konfigurowanie usuwa katalog kompilacji i ponownie konfiguruje je z czystej pamięci podręcznej.

  • Konfigurowanie pamięci podręcznej wymusza uruchomienie kroku generowania, nawet jeśli Visual Studio uwzględnia aktualne środowisko.

Kompilowanie projektów CMake

Krok kompilacji narzędzia CMake tworzy już wygenerowane drzewo binarne projektu. Jest to równoważne wywołaniu cmake --build z wiersza polecenia. Aby uzyskać więcej informacji na temat kroku kompilacji narzędzia CMake, zobacz dokumentację narzędzia CMake.

Aby utworzyć projekt CMake, możesz wybrać następujące opcje:

  1. Na pasku narzędzi znajdź listę rozwijaną Element startowy . Wybierz preferowany element docelowy i naciśnij klawisz F5 lub wybierz przycisk Uruchom na pasku narzędzi. Projekt automatycznie kompiluje się jako rozwiązanie Visual Studio.

  2. Kliknij prawym przyciskiem myszy obiekt docelowy narzędzia CMake z aktywnym widokiem obiektów docelowych narzędzia CMake w Eksplorator rozwiązań i wybierz polecenie Kompiluj z menu kontekstowego.

  3. Z menu głównego wybierz pozycję Kompiluj > wszystko. Upewnij się, że element docelowy narzędzia CMake został już wybrany na liście rozwijanej Element startowy na pasku narzędzi.

Jak można się spodziewać, wyniki kompilacji są wyświetlane w oknie danych wyjściowych i na liście błędów.

CMake build errors.

Edytowanie ustawień kompilacji

Visual Studio używa pliku konfiguracji narzędzia CMake do dysków kompilacji narzędzia CMake. Pliki konfiguracji narzędzia CMake hermetyzują opcje kompilacji, takie jak natywne przełączniki narzędzi kompilacji i zmienne środowiskowe. Jeśli CMakePresets.json jest aktywnym plikiem konfiguracji, zobacz Konfigurowanie i kompilowanie przy użyciu ustawień wstępnych narzędzia CMake. Jeśli CMakeSettings.json jest aktywnym plikiem konfiguracji, zobacz Dostosowywanie ustawień kompilacji narzędzia CMake. CMakePresets.jsonjest dostępny w wersji Visual Studio 2019 w wersji 16.10 lub nowszej i jest zalecanym plikiem konfiguracji narzędzia CMake.

Debugowanie projektów CMake

Wszystkie obiekty docelowe narzędzia CMake wykonywalne są wyświetlane na liście rozwijanej Element startowy na pasku narzędzi. Aby rozpocząć debugowanie, wybierz jeden i naciśnij przycisk Debuguj > rozpocznij debugowanie na pasku narzędzi. W projekcie CMake opcja "Bieżący dokument" jest prawidłowa tylko dla plików cpp.

A screenshot of the Startup Item dropdown in a CMake project.

Polecenia Debuguj lub F5 najpierw skompilują projekt, jeśli zmiany zostały wprowadzone od poprzedniej kompilacji. Zmiany w pliku konfiguracji narzędzia CMake (CMakePresets.json lub CMakeSettings.json) lub powodują CMakeLists.txt ponowne wygenerowanie pamięci podręcznej CMake.

Sesję debugowania narzędzia CMake można dostosować, ustawiając właściwości w launch.vs.json pliku. Aby dostosować ustawienia debugowania dla określonego obiektu docelowego, wybierz element docelowy na liście rozwijanej Element startowy i naciśnij pozycję Debuguj > i Uruchom Ustawienia dla <aktywnego elementu docelowego>. Aby uzyskać więcej informacji na temat sesji debugowania narzędzia CMake, zobacz Konfigurowanie sesji debugowania narzędzia CMake.

Tylko mój kod dla projektów CMake

Podczas kompilowania dla Windows przy użyciu kompilatora MSVC projekty narzędzia CMake obsługują debugowanie Just My Code. Aby zmienić ustawienie Tylko mój kod, przejdź do pozycji Narzędzia>Opcje>debugowania>Ogólne.

Edytowanie i kontynuowanie projektów CMake

Podczas kompilowania dla Windows za pomocą kompilatora MSVC projekty narzędzia CMake obsługują obsługę funkcji Edytuj i Kontynuuj. Dodaj następujący kod do pliku, CMakeLists.txt aby włączyć opcję Edytuj i Kontynuuj.

if(MSVC)
  target_compile_options(<target> PUBLIC "/ZI")
  target_link_options(<target> PUBLIC "/INCREMENTAL")
endif()

Dołączanie do projektu CMake uruchomionego w systemie Linux

Visual Studio umożliwia debugowanie procesu uruchomionego w zdalnym systemie Linux lub WSL i debugowanie go za pomocą debugera GDB. Aby rozpocząć, wybierz pozycję Debuguj>dołączanie do procesu..., ustaw typ połączenia na SSH i wybierz element docelowy połączenia z listy połączeń w Menedżer połączeń. Wybierz proces z listy dostępnych procesów i naciśnij przycisk Dołącz. Baza danych GDB musi być zainstalowana na maszynie z systemem Linux. Aby uzyskać więcej informacji na temat połączeń SSH, zobacz Menedżer połączeń

A screenshot of the Attach to Process menu.

Aktywacja częściowa narzędzia CMake

W Visual Studio 2022 w wersji 17.1 lub nowszej funkcja narzędzia CMake nie zostanie włączona automatycznie, jeśli folder główny nie zawiera CMakeLists.txt pliku. Zamiast tego zostanie wyświetlone okno dialogowe z monitem o włączenie funkcji narzędzia CMake dla projektu. W przypadku odrzucenia generowanie pamięci podręcznej CMake nie zostanie uruchomione, a konfiguracje narzędzia CMake (z CMakeSettings.json programu lub CMakePresets.json) nie będą wyświetlane na liście rozwijanej konfiguracji. Jeśli zaakceptujesz, nastąpi przekierowanie do pliku konfiguracji na poziomie obszaru roboczego (przechowywanego .vs w katalogu), aby określić foldery, CMakeWorkspaceSettings.json dla których chcesz włączyć narzędzie CMake. (Te foldery zawierają pliki główne CMakeLists.txt ).

Zaakceptowane właściwości to:

Właściwość Opis
enableCMake Włącz integrację Visual Studio dla tego obszaru roboczego.
sourceDirectory Ciąg lub tablica ciągów określający katalog lub katalogi za pomocą polecenia CMakeLists.txt. Makra (takie jak ${workspaceRoot}) są dozwolone. Ścieżki względne są oparte na katalogu głównym obszaru roboczego. Katalogi poza bieżącym obszarem roboczym zostaną zignorowane.

W dowolnym momencie możesz uzyskać dostęp za CMakeWorkspaceSettings.json pośrednictwem > Project CMake Workspace Ustawienia polecenia menu, nawet jeśli funkcja narzędzia CMake jest obecnie wyłączona.

Otwieranie istniejącej pamięci podręcznej

Po otwarciu istniejącego pliku pamięci podręcznej CMake (CMakeCache.txt) Visual Studio nie próbuje zarządzać pamięcią podręczną i drzewem kompilacji. Niestandardowe lub preferowane narzędzia mają pełną kontrolę nad sposobem konfigurowania projektu przez narzędzie CMake.

Możesz dodać istniejącą pamięć podręczną CMake do otwartego projektu. Odbywa się to w taki sam sposób, w jaki można dodać nową konfigurację. Aby uzyskać więcej informacji, zobacz nasz wpis w blogu dotyczący otwierania istniejącej pamięci podręcznej w Visual Studio.

Uwaga

Domyślne istniejące środowisko pamięci podręcznej opiera się na cmake-serversystemie , który został usunięty z narzędzia CMake w wersji 3.20. Aby nadal korzystać z istniejących funkcji pamięci podręcznej w Visual Studio 2019 w wersji 16.10 lub nowszej, wykonaj jedną z następujących czynności:

  • Ręcznie zainstaluj narzędzie CMake w wersji 3.19 lub nowszej. Następnie ustaw cmakeExecutable właściwość w istniejącej konfiguracji pamięci podręcznej, aby używać tej wersji narzędzia CMake.
  • W istniejącej konfiguracji pamięci podręcznej ustaw cacheGenerationCommand właściwość , aby umożliwić Visual Studio zażądać niezbędnych plików interfejsu API opartych na pliku CMake. Aby uzyskać więcej informacji na temat tej właściwości, zobacz CMakeSettings.json reference (Dokumentacja CMakeSettings.json).
  • Użyj pliku zapytania, aby zażądać plików interfejsu API opartego na pliku CMake podczas generowania pamięci podręcznej przed otwarciem w Visual Studio. Aby uzyskać instrukcje dotyczące pliku zapytania, zobacz następną sekcję Rozwiązywanie problemów z zaawansowaną pamięcią podręczną CMake.

Zaawansowane rozwiązywanie problemów z pamięcią podręczną CMake

Visual Studio używa interfejsu API opartego na plikach CMake (w wersjach 3.14 i nowszych), aby wypełnić edytor informacjami specyficznymi dla struktury projektu. Aby uzyskać więcej informacji, zobacz wpis w blogu zespołu języka C++ dotyczący obszarów roboczych z wieloma głównymi obszarami roboczymi i interfejsem API opartym na plikach.

Przed wygenerowaniem pamięci podręcznej CMake niestandardowe lub preferowane narzędzia mogą wymagać utworzenia pliku zapytania o nazwie .cmake/api/v1/query/client-MicrosoftVS/query.json w folderze wyjściowym kompilacji (folder zawierający CMakeCache.txt). Plik zapytania powinien zawierać następującą zawartość:

{"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}

Gdy niestandardowe lub preferowane narzędzia generują pamięć podręczną, narzędzie CMake umieszcza pliki w tym .cmake/api/v1/response Visual Studio używane do wypełniania edytora informacjami specyficznymi dla struktury projektu.

Edytowanie CMakeLists.txt plików

Aby edytować CMakeLists.txt plik, kliknij prawym przyciskiem myszy plik w Eksplorator rozwiązań i wybierz polecenie Otwórz. Jeśli wprowadzisz zmiany w pliku, pojawi się żółty pasek stanu i poinformuje Cię, że IntelliSense zostanie zaktualizowana. Daje to szansę na anulowanie operacji aktualizacji. Aby uzyskać informacje o CMakeLists.txtprogramie , zobacz dokumentację narzędzia CMake.

CMakeLists.txt file editing.

Po zapisaniu pliku krok konfiguracji jest uruchamiany ponownie i wyświetla informacje w oknie Dane wyjściowe . Błędy i ostrzeżenia są wyświetlane w oknie Lista błędów lub Dane wyjściowe . Kliknij dwukrotnie błąd na liście błędów , aby przejść do wiersza przestępstwa w pliku CMakeLists.txt.

CMakeLists.txt file errors.

Usługi językowe dla narzędzia CMake

Usługi językowe narzędzia CMake są dostępne w wersji 16.5 lub nowszej Visual Studio 2019. Obsługuje ona funkcje nawigacji kodu, takie jak Przejdź do definicji, Peek Definition i Find All References for CMake variables, functions i targets w plikach skryptów narzędzia CMake. Aby uzyskać więcej informacji, zobacz Nawigacja po kodzie dla skryptów CMake.

Find All References on a CMake variable, target, or function.

Manipulowanie projektem CMake

Manipulowanie projektem CMake jest dostępne w wersji 16.5 lub nowszej Visual Studio 2019. Project manipulowanie umożliwia dodawanie, usuwanie i zmienianie nazw plików źródłowych i elementów docelowych w projekcie CMake bez ręcznego edytowania skryptów CMake. Po dodaniu lub usunięciu plików z Eksplorator rozwiązań Visual Studio automatycznie edytuje projekt CMake. Może istnieć więcej niż jedno miejsce, w którym warto dodać lub usunąć odwołanie do skryptu narzędzia CMake. Jeśli tak, Visual Studio pyta, gdzie chcesz wprowadzić zmianę i wyświetla podgląd proponowanych zmian. Aby uzyskać instrukcje krok po kroku, zobacz Dodawanie, usuwanie i zmienianie nazw plików i elementów docelowych w projektach CMake.

Resolving ambiguity with CMake project manipulation.

IntelliSense dla projektów CMake

Domyślnie Visual Studio używa trybu IntelliSense zgodnego z architekturą kompilatora i docelową określoną przez aktywną konfigurację narzędzia CMake.

Jeśli CMakePresets.json jest aktywnym plikiem konfiguracji narzędzia CMake, możesz określić IntelliSense opcje przy użyciu intelliSenseMode i intelliSenseOptions na mapie dostawcy Visual Studio Ustawienia. Aby uzyskać więcej informacji, zobacz dokumentację mapy dostawcy Visual Studio Ustawienia.

Jeśli CMakeSettings.json jest aktywnym plikiem konfiguracji narzędzia CMake, możesz określić IntelliSense opcje przy użyciu w intelliSenseMode pliku CMakeSettings.json. Aby uzyskać więcej informacji, zobacz dokumentacjęCMakeSettings.json.

Konfigurowanie IntelliSense za pomocą plików łańcucha narzędzi CMake

W Visual Studio 2019 w wersji 16.9 lub nowszej Visual Studio automatycznie konfiguruje IntelliSense w projektach CMake na podstawie zmiennych CMake podczas korzystania z pliku łańcucha narzędzi CMake. Aby uzyskać więcej informacji, zobacz Configure IntelliSense with CMake Toolchain Files (Konfigurowanie IntelliSense za pomocą plików łańcucha narzędzi CMake).

Integracja narzędzia Vcpkg

Projekty CMake otwarte w Visual Studio integrują się z vcpkg, wieloplatformowym menedżerem zależności C/C++. Przed użyciem vcpkg z Visual Studio należy uruchomić polecenie vcpkg integrate install. Aby uzyskać instrukcje i więcej informacji na temat vcpkg, zobacz dokumentację vcpkg.

Jeśli CMakeSettings.json jest aktywnym plikiem konfiguracji, Visual Studio automatycznie przekazuje vcpkg plik łańcucha narzędzi (vcpkg.cmake) do narzędzia CMake. To zachowanie jest automatycznie wyłączone po określeniu innego łańcucha narzędzi w konfiguracji narzędzia CMake Ustawienia.

Jeśli CMakePresets.json jest aktywnym plikiem konfiguracji, musisz ustawić ścieżkę na vcpkg.cmake w pliku CMakePresets.json. Zalecamy używanie zmiennej środowiskowej VCPKG_ROOT zamiast ścieżki bezwzględnej, aby zachować możliwość udostępniania plików. Aby uzyskać więcej informacji, zobacz Włączanie integracji vcpkg z ustawieniami wstępnymi narzędzia CMake. CMakePresets.jsonjest dostępny w wersji Visual Studio 2019 w wersji 16.10 lub nowszej i jest zalecanym plikiem konfiguracji narzędzia CMake.

Uruchamianie narzędzia CMake z wiersza polecenia

Jeśli CMakePresets.json jest aktywnym plikiem konfiguracji narzędzia CMake, możesz łatwo odtworzyć lokalne kompilacje poza Visual Studio. Aby uzyskać więcej informacji, zobacz Run CMake from the command line or a CI pipeline (Uruchamianie narzędzia CMake z wiersza polecenia lub potoku ciągłej integracji). CMakePresets.jsonprogram jest obsługiwany w wersji 16.10 lub nowszej Visual Studio 2019 i jest zalecanym plikiem konfiguracji narzędzia CMake.

Jeśli CMakeSettings.json jest aktywnym plikiem konfiguracji narzędzia CMake, należy ręcznie przekazać argumenty zakodowane w CMakeSettings.json pliku do narzędzia CMake. Jeśli zainstalowano narzędzie CMake z Instalator programu Visual Studio, możesz uruchomić go z poziomu wiersza polecenia, wykonując następujące kroki:

  1. Uruchom odpowiedni vsdevcmd.bat plik (x86/x64). Aby uzyskać więcej informacji, zobacz Kompilowanie w wierszu polecenia .

  2. Przejdź do folderu wyjściowego.

  3. Uruchom narzędzie CMake, aby skompilować lub skonfigurować aplikację.

Visual Studio 2017 ma zaawansowaną obsługę narzędzia CMake, w tym międzyplatformowe projekty CMake. Składnik Visual C++ Tools for CMake używa funkcji Otwórz folder, aby umożliwić środowisku IDE korzystanie z plików projektów CMake (takich jak CMakeLists.txt) bezpośrednio na potrzeby IntelliSense i przeglądania. Obsługiwane są zarówno generatory Ninja, jak i Visual Studio. Jeśli używasz generatora Visual Studio, generuje tymczasowy plik projektu i przekazuje go do MSBuild. Jednak projekt nigdy nie jest ładowany do celów IntelliSense lub przeglądania. Możesz również zaimportować istniejącą pamięć podręczną CMake.

Instalacja

Narzędzia Visual C++ Tools for CMake są instalowane w ramach tworzenia aplikacji klasycznych przy użyciu języków C++ i Linux Development z obciążeniami języka C++ .

Screenshot of the Individual components tab with the Visual C plus plus tools for C make option called out.

Aby uzyskać więcej informacji, zobacz Instalowanie obciążenia C++ Linux w Visual Studio.

Integracja środowiska IDE

Po wybraniu pozycji Plik > Otwórz > folder , aby otworzyć folder zawierający CMakeLists.txt plik, dzieje się następująca sytuacja:

  • Visual Studio dodaje element menu CMake do menu głównego z poleceniami do wyświetlania i edytowania skryptów CMake.

  • Eksplorator rozwiązań wyświetla strukturę folderów i pliki.

  • Visual Studio uruchamia narzędzie CMake i opcjonalnie generuje pamięć podręczną CMake dla konfiguracji domyślnej, czyli x86 Debug. Wiersz polecenia narzędzia CMake jest wyświetlany w oknie danych wyjściowych wraz z innymi danymi wyjściowymi narzędzia CMake.

  • W tle Visual Studio zaczyna indeksować pliki źródłowe w celu włączenia IntelliSense, przeglądania informacji, refaktoryzacji itd. Podczas pracy Visual Studio monitoruje zmiany w edytorze, a także na dysku w celu zachowania synchronizacji indeksu ze źródłami.

Możesz otwierać foldery zawierające dowolną liczbę projektów CMake. Visual Studio wykrywa i konfiguruje wszystkie pliki "root" CMakeLists.txt w obszarze roboczym. Operacje CMake (konfigurowanie, kompilowanie, debugowanie), IntelliSense języka C++ i przeglądanie są dostępne dla wszystkich projektów CMake w obszarze roboczym.

CMake project with multiple roots.

Projekty można również wyświetlać logicznie według elementów docelowych. Wybierz widok Cele z listy rozwijanej na pasku narzędzi Eksplorator rozwiązań:

CMake targets view button.

Visual Studio używa pliku o nazwie CMakeSettings.json do przechowywania zmiennych środowiskowych lub opcji wiersza polecenia dla narzędzia CMake. CMakeSettings.json Umożliwia również definiowanie i przechowywanie wielu konfiguracji kompilacji narzędzia CMake. Możesz wygodnie przełączać się między nimi w środowisku IDE.

W przeciwnym razie użyj CMakeLists.txt polecenia tak samo jak w każdym projekcie CMake, aby określić pliki źródłowe, znaleźć biblioteki, ustawić opcje kompilatora i konsolidatora oraz określić inne informacje związane z systemem kompilacji.

Jeśli musisz przekazać argumenty do pliku wykonywalnego w czasie debugowania, możesz użyć innego pliku o nazwie launch.vs.json. W niektórych scenariuszach Visual Studio automatycznie generuje te pliki. Można je edytować ręcznie, a nawet samodzielnie utworzyć plik.

Uwaga

W przypadku innych rodzajów projektów Open Folder są używane dwa dodatkowe pliki JSON: CppProperties.json i tasks.vs.json. Żadna z tych elementów nie jest odpowiednia dla projektów CMake.

Importowanie istniejącej pamięci podręcznej

Podczas importowania istniejącego CMakeCache.txt pliku Visual Studio automatycznie wyodrębnia dostosowane zmienne i tworzy wstępnie wypełniony CMakeSettings.json plik na ich podstawie. Oryginalna pamięć podręczna nie jest modyfikowana w żaden sposób. Można go nadal używać z poziomu wiersza polecenia lub z jakimkolwiek narzędziem lub środowiskiem IDE używanym do jego wygenerowania. Nowy CMakeSettings.json plik jest umieszczany obok katalogu głównego CMakeLists.txtprojektu . Visual Studio generuje nową pamięć podręczną na podstawie pliku ustawień. Automatyczne generowanie pamięci podręcznej można przesłonić w oknie dialogowym Narzędzia > Opcje > narzędzia Ogólne narzędzia.>

Nie wszystkie elementy w pamięci podręcznej są importowane. Właściwości, takie jak generator i lokalizacja kompilatorów, są zastępowane wartościami domyślnymi, które są znane jako dobrze współdziałające ze środowiskiem IDE.

Aby zaimportować istniejącą pamięć podręczną

  1. W menu głównym wybierz kolejno pozycje Plik > Otwórz > narzędzie CMake:

    Open CMake.

    To polecenie powoduje wyświetlenie kreatora Importowanie narzędzia CMake z pamięci podręcznej .

  2. Przejdź do CMakeCache.txt pliku, który chcesz zaimportować, a następnie wybierz przycisk OK. Zostanie wyświetlony kreator Importowanie narzędzia CMake Project z pamięci podręcznej:

    Import a CMake cache.

    Po zakończeniu pracy kreatora będzie można zobaczyć nowy CMakeCache.txt plik w Eksplorator rozwiązań obok pliku głównego CMakeLists.txt w projekcie.

Kompilowanie projektów CMake

Aby utworzyć projekt CMake, możesz wybrać następujące opcje:

  1. Na pasku narzędzi Ogólne znajdź listę rozwijaną Konfiguracje . Prawdopodobnie domyślnie jest wyświetlany komunikat "Linux-Debug" lub "x64-Debug". Wybierz preferowaną konfigurację i naciśnij klawisz F5 lub wybierz przycisk Uruchom (zielony trójkąt) na pasku narzędzi. Projekt automatycznie kompiluje się jako rozwiązanie Visual Studio.

  2. Kliknij prawym przyciskiem myszy CMakeLists.txtw Eksplorator rozwiązań i wybierz polecenie Kompiluj z menu kontekstowego. Jeśli masz wiele obiektów docelowych w strukturze folderów, możesz utworzyć wszystkie lub tylko jeden konkretny obiekt docelowy.

  3. W menu głównym wybierz pozycję Kompiluj rozwiązanie kompilacji > (F7 lub Ctrl+Shift+B). Upewnij się, że element docelowy narzędzia CMake został już wybrany na liście rozwijanej Element startowy na pasku narzędzi Ogólne .

CMake build menu command.

Konfiguracje kompilacji, zmienne środowiskowe, argumenty wiersza polecenia i inne ustawienia można dostosować w CMakeSettings.json pliku. Umożliwia wprowadzanie zmian bez modyfikowania CMakeLists.txt pliku. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień narzędzia CMake.

Jak można się spodziewać, wyniki kompilacji są wyświetlane w oknie danych wyjściowych i na liście błędów.

CMake build errors.

W folderze z wieloma miejscami docelowymi kompilacji możesz określić obiekt docelowy narzędzia CMake do skompilowania: wybierz element Kompilacja w menu narzędzia CMake lub CMakeLists.txt menu kontekstowe, aby określić element docelowy. Jeśli wprowadzisz klawisze Ctrl+Shift+B w projekcie CMake, skompiluje bieżący aktywny dokument.

Debugowanie projektów CMake

Aby debugować projekt CMake, wybierz preferowaną konfigurację i naciśnij klawisz F5. Możesz też nacisnąć przycisk Uruchom na pasku narzędzi. Jeśli przycisk Uruchom ma wartość "Wybierz element startowy", wybierz strzałkę listy rozwijanej i wybierz element docelowy, który chcesz uruchomić. (W projekcie CMake opcja "Bieżący dokument" jest prawidłowa tylko dla plików cpp).

CMake run button.

Polecenia Uruchom lub F5 najpierw skompilują projekt, jeśli zmiany zostały wprowadzone od poprzedniej kompilacji.

Sesję debugowania narzędzia CMake można dostosować, ustawiając właściwości w launch.vs.json pliku. Aby uzyskać więcej informacji, zobacz Konfigurowanie sesji debugowania narzędzia CMake.

Edytowanie CMakeLists.txt plików

Aby edytować CMakeLists.txt plik, kliknij prawym przyciskiem myszy plik w Eksplorator rozwiązań i wybierz polecenie Otwórz. Jeśli wprowadzisz zmiany w pliku, pojawi się żółty pasek stanu i poinformuje Cię, że IntelliSense zostanie zaktualizowana. Daje to szansę na anulowanie operacji aktualizacji. Aby uzyskać informacje o CMakeLists.txtprogramie , zobacz dokumentację narzędzia CMake.

CMakeLists.txt file editing.

Po zapisaniu pliku krok konfiguracji jest uruchamiany ponownie i wyświetla informacje w oknie Dane wyjściowe . Błędy i ostrzeżenia są wyświetlane w oknie Lista błędów lub Dane wyjściowe . Kliknij dwukrotnie błąd na liście błędów , aby przejść do wiersza przestępstwa w pliku CMakeLists.txt.

CMakeLists.txt file errors.

Krok konfigurowania narzędzia CMake

Po wprowadzeniu znaczących zmian w plikach CMakeSettings.json lub CMakeLists.txt Visual Studio automatycznie uruchomi krok konfiguracji narzędzia CMake. Jeśli krok konfiguracji zakończy się bez błędów, zebrane informacje są dostępne w usługach języka C++ IntelliSense i językowych. Jest on również używany w operacjach kompilacji i debugowania.

Wiele projektów CMake może używać tej samej nazwy konfiguracji narzędzia CMake (na przykład x86-Debug). Wszystkie z nich są konfigurowane i kompilowane (we własnym folderze głównym kompilacji) po wybraniu tej konfiguracji. Obiekty docelowe można debugować ze wszystkich projektów CMake, które uczestniczą w tej konfiguracji narzędzia CMake.

CMake Build Only menu item.

Sesje kompilacji i debugowania można ograniczyć do podzestawu projektów w obszarze roboczym. Utwórz nową konfigurację o unikatowej nazwie w CMakeSettings.json pliku. Następnie zastosuj konfigurację tylko do tych projektów. Po wybraniu tej konfiguracji IntelliSense i polecenia kompilacji i debugowania dotyczą tylko tych określonych projektów.

Rozwiązywanie problemów z błędami pamięci podręcznej CMake

Jeśli potrzebujesz więcej informacji na temat stanu pamięci podręcznej CMake w celu zdiagnozowania problemu, otwórz menu główne narzędzia CMake lub CMakeLists.txt menu kontekstowe w Eksplorator rozwiązań, aby uruchomić jedno z następujących poleceń:

  • Widok Pamięć podręcznaCMakeCache.txt otwiera plik z folderu głównego kompilacji w edytorze. (Wszelkie zmiany, które należy wprowadzić w tym CMakeCache.txt miejscu, zostaną wyczyszczone, jeśli wyczyścisz pamięć podręczną. Aby wprowadzić zmiany utrwalane po wyczyszczeniu pamięci podręcznej, zobacz Dostosowywanie ustawień narzędzia CMake).

  • Otwórz folder pamięci podręcznej otwiera okno Eksploratora w folderze głównym kompilacji.

  • Clean Cache usuwa folder główny kompilacji, aby następny krok konfiguracji narzędzia CMake rozpoczynał się od czystej pamięci podręcznej.

  • Generowanie pamięci podręcznej wymusza uruchomienie kroku generowania, nawet jeśli Visual Studio uwzględnia aktualne środowisko.

Automatyczne generowanie pamięci podręcznej można wyłączyć w oknie dialogowym Narzędzia > Opcje > ogólne narzędzia.>

Kompilacja pojedynczego pliku

Aby skompilować pojedynczy plik w projekcie CMake, kliknij prawym przyciskiem myszy plik w Eksplorator rozwiązań. Wybierz pozycję Skompiluj z menu podręcznego. Możesz również skompilować aktualnie otwarty plik w edytorze przy użyciu głównego menu narzędzia CMake :

CMake single file compilation.

Uruchamianie narzędzia CMake z wiersza polecenia

Jeśli zainstalowano narzędzie CMake z Instalator programu Visual Studio, możesz uruchomić go z poziomu wiersza polecenia, wykonując następujące kroki:

  1. Uruchom odpowiedni vsdevcmd.bat plik (x86/x64). Aby uzyskać więcej informacji, zobacz Kompilowanie w wierszu polecenia.

  2. Przejdź do folderu wyjściowego.

  3. Uruchom narzędzie CMake, aby skompilować lub skonfigurować aplikację.

W Visual Studio 2015 r. użytkownicy Visual Studio mogą użyć generatora narzędzia CMake do generowania plików projektu MSBuild, które następnie środowisko IDE zużywa do IntelliSense, przeglądania i kompilacji.

Zobacz też

Samouczek: Tworzenie międzyplatformowych projektów w języku C++ w programie Visual Studio
Konfigurowanie projektu CMake systemu Linux
Nawiązywanie połączenia ze zdalnym komputerem z systemem Linux
Dostosowywanie ustawień kompilacji narzędzia CMake
CMakeSettings.json odwołanie do schematu
Konfigurowanie sesji debugowania narzędzia CMake
Wdrażanie, uruchamianie i debugowanie projektu systemu Linux
Odwołanie do wstępnie zdefiniowanej konfiguracji narzędzia CMake