Projekty CMake w programie Visual Studio

CMake to międzyplatformowe narzędzie typu open source służące 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 programem Visual Studio w ciągu ostatnich kilku wersji. Aby zapoznać się z dokumentacją preferowanej wersji programu 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 w programie Visual Studio umożliwia edytowanie, kompilowanie i debugowanie projektów CMake w systemie Windows, Podsystem Windows dla systemu Linux (WSL) i systemów zdalnych z tego samego wystąpienia programu Visual Studio. Pliki projektu CMake (takie jak CMakeLists.txt) są używane bezpośrednio przez program Visual Studio na potrzeby funkcji IntelliSense i przeglądania. cmake.exe jest wywoływany bezpośrednio przez program Visual Studio dla konfiguracji i kompilacji narzędzia CMake.

Instalacja

Narzędzia CMake języka C++ dla systemu Windows są instalowane w ramach tworzenia aplikacji klasycznych przy użyciu języków C++ i Linux Development z obciążeniami języka C++ . Zarówno narzędzia CMake języka C++ dla programowania w systemach Windows, jak i Linux z językiem C++ są wymagane do programowania międzyplatformowego narzędzia CMake.

Zrzut ekranu instalatora programu Visual Studio.

W instalatorze jest wybrana lista rozwijana Programowanie aplikacji klasycznych z językiem C plus plus i C oraz narzędzia C Make dla systemu Windows.

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

Integracja środowiska IDE

Po otwarciu folderu zawierającego CMakeLists.txt plik następuje wykonanie następujących czynności.

Zrzut ekranu przedstawiający pierwsze okno dialogowe otwierane po uruchomieniu programu Visual Studio.

Okno dialogowe oferuje następujące opcje: klonowanie repozytorium, otwieranie projektu lub rozwiązania, otwieranie folderu lokalnego lub tworzenie nowego projektu. Otwórz folder lokalny jest wywoływany na zrzucie ekranu.

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

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

  • Program 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 program Visual Studio rozpoczyna indeksowanie plików źródłowych w celu włączenia funkcji IntelliSense, przeglądania informacji, refaktoryzacji itd. Podczas pracy program Visual Studio monitoruje zmiany w edytorze, a także na dysku, aby zachować synchronizację indeksu ze źródłami.

Uwaga

Począwszy od programu Visual Studio 2022 w wersji 17.1 (wersja zapoznawcza 2), jeśli twój najwyższy poziom CMakeLists.txt istnieje w podfolderze, a nie w katalogu głównym obszaru roboczego, zostanie wyświetlony monit, czy chcesz włączyć integrację narzędzia CMake, czy nie. Aby uzyskać więcej informacji, zobacz CMake partial activation (Aktywacja częściowa narzędzia CMake).

Gdy generowanie pamięci podręcznej CMake zakończyło się pomyślnie, możesz również wyświetlać projekty uporządkowane logicznie według obiektó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:

Zrzut ekranu przedstawiający okno widoków Eksplorator rozwiązań. Widok folderu jest otwarty. Opcja Ustaw obiekty docelowe w języku C jest wyróżniona.

Wybierz przycisk Pokaż wszystkie pliki w górnej części Eksplorator rozwiązań, aby wyświetlić wszystkie dane wyjściowe wygenerowane przez narzędzie CMake w out/build/<config> 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 kompilacji związane z systemem. Aby uzyskać więcej informacji na temat usług językowych CMake udostępnianych przez program Visual Studio, zobacz Edytowanie plików CMakeLists.txt.

Program Visual Studio używa pliku konfiguracji 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 programie Visual Studio, zobacz Debugowanie projektów CMake.

Większość funkcji języka Visual Studio i C++ jest obsługiwana przez projekty CMake w programie Visual Studio. Oto kilka przykładów:

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 konfigurowania narzędzia CMake, zobacz dokumentację narzędzia CMake.

Program Visual Studio używa pliku konfiguracji CMake do generowania i kompilowania narzędzia CMake. CMakePresets.json Program jest obsługiwany przez program Visual Studio 2019 w wersji 16.10 lub nowszej i jest zalecanym plikiem konfiguracji narzędzia CMake. CMakePresets.json program jest obsługiwany bezpośrednio przez narzędzie CMake i może służyć do generowania i kompilowania narzędzia CMake z poziomu programu Visual Studio, z programu VS Code w potoku ciągłej integracji oraz z wiersza polecenia w systemach Windows, Linux i Mac. Aby uzyskać więcej informacji na temat CMakePresets.jsonprogramu , zobacz Configure and build with CMake Presets (Konfigurowanie i kompilowanie przy użyciu ustawień wstępnych narzędzia CMake). CMakeSettings.json jest dostępna dla klientów korzystających ze starszej wersji programu 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 program Visual Studio automatycznie uruchomi krok konfiguracji narzędzia CMake. Krok konfigurowania można wywołać ręcznie: wybierz pozycję Project Configure Cache (Konfigurowanie pamięci podręcznej projektu>) na pasku narzędzi. Możesz również zmienić preferencje konfiguracji w obszarze Narzędzia>Opcje>CMake>Ogólne.

Zrzut ekranu przedstawiający opcje konfiguracji narzędzia CMake w oknie ustawień programu Visual Studio.

Ustawienia konfiguracji narzędzia CMake są wywoływane. Pokaż opcję Ustaw powiadomienia w pamięci podręcznej w języku C jest zaznaczone. W obszarze "Gdy pamięć podręczna jest nieaktualna:", jest wybrana opcja "Nigdy nie uruchamiaj kroku konfigurowania automatycznie".

Jeśli krok konfigurowania zakończy się bez błędów, informacje dostępne są na dyskach C++ IntelliSense i usługach 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 programie 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 pozycji Pokaż powiadomienie pamięci podręcznej narzędzia CMake.

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

Jeśli potrzebujesz więcej informacji na temat stanu pamięci podręcznej CMake w celu zdiagnozowania problemu, otwórz menu główne projektu 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 miejscu CMakeCache.txt , 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 lub Konfigurowanie i kompilowanie przy użyciu ustawień wstępnych narzędzia CMake.

  • Usuń pamięć podręczną i ponownie skonfiguruje katalog kompilacji i ponownie skonfiguruje je z czystej pamięci podręcznej.

  • Konfigurowanie pamięci podręcznej wymusza uruchomienie kroku generowania, nawet jeśli program 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ę tak samo jak rozwiązanie programu 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.

Zrzut ekranu przedstawiający okno Lista błędów programu Visual Studio Ostrzeżenia kompilacji narzędzia CMake dotyczące konwersji, które mogą spowodować utratę danych, na przykład konwersję z liczby zmiennoprzecinkowej na liczbę całkowitą, są widoczne. :::image-end:::

Edytowanie ustawień kompilacji

Program Visual Studio używa pliku konfiguracji CMake do obsługi 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.json jest dostępny w programie Visual Studio 2019 w wersji 16.10 lub nowszej i jest zalecanym plikiem konfiguracji narzędzia CMake.

Debugowanie projektów CMake

Wszystkie elementy 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.

Zrzut ekranu przedstawiający listę rozwijaną debugowania programu Visual Studio.

Lista rozwijana zawiera następujące opcje: Pokaż/Ukryj elementy docelowe debugowania, bieżący dokument, przykłady (wyróżnione), box2d_tests i samples-noGUI.

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 ) lub CMakeSettings.jsonCMakeLists.txt powodują 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 miejsca docelowego, wybierz element docelowy z listy rozwijanej Element startowy i naciśnij pozycję Debuguj > debugowanie i uruchom Ustawienia dla <elementu docelowego aktywnego>. 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 systemu Windows przy użyciu kompilatora MSVC projekty CMake obsługują debugowanie Just My Code. Aby zmienić ustawienie Tylko mój kod, przejdź do pozycji Narzędzia>Opcje>Debugowanie>ogólne.

Edytowanie i kontynuowanie projektów CMake

Podczas kompilowania dla systemu Windows za pomocą kompilatora MSVC projekty CMake obsługują edytowanie i kontynuowanie. Dodaj następujący kod do CMakeLists.txt pliku, 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

Program 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łączenie ion na SSH, a następnie wybierz element docelowy Połączenie ion z listy połączeń w menedżerze Połączenie ion. 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łączenie ion

Zrzut ekranu przedstawiający menu Dołączanie do procesu w programie Visual Studio.

Następujące opcje są dostępne w oknie dialogowym: typ Połączenie ion (ustawiony na SSH), cel połączenia (ustawiony na demo@ 172. 20. 60. 6) oraz listę dostępnych procesów, do których można dołączyć.

Aktywacja częściowa narzędzia CMake

W programie Visual Studio 2022 w wersji 17.1 lub nowszej funkcja 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 to, czy chcesz włączyć funkcję CMake dla projektu. Jeśli odrzucisz, generowanie pamięci podręcznej CMake nie zostanie uruchomione, a konfiguracje narzędzia CMake (z lub CMakeSettings.jsonCMakePresets.json) nie będą wyświetlane na liście rozwijanej konfiguracji. Jeśli zaakceptujesz, nastąpi przekierowanie do pliku CMakeWorkspaceSettings.json konfiguracji na poziomie obszaru roboczego (przechowywanego .vs w katalogu), aby określić foldery, 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ści opis
enableCMake Włącz integrację programu 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 spoza bieżącego obszaru roboczego zostaną zignorowane.

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

Otwieranie istniejącej pamięci podręcznej

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

Do otwartego projektu można dodać istniejącą pamięć podręczną CMake. Odbywa się to tak samo, jak w przypadku dodawania nowej konfiguracji. Aby uzyskać więcej informacji, zobacz nasz wpis w blogu dotyczący otwierania istniejącej pamięci podręcznej w programie Visual Studio.

Uwaga

Domyślne istniejące środowisko pamięci podręcznej opiera się na metodzie cmake-server, która została usunięta z narzędzia CMake w wersji 3.20. Aby kontynuować korzystanie z istniejącej funkcji pamięci podręcznej w programie 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 starszej. 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ć programowi Visual Studio żądanie niezbędnych plików interfejsu API opartych na pliku CMake. Aby uzyskać więcej informacji na temat tej właściwości, zobacz CMake Ustawienia.json reference (Dokumentacja narzędzia CMake Ustawienia.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 programie Visual Studio. Aby uzyskać instrukcje dotyczące pliku zapytań, 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

Program 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 ramach .cmake/api/v1/response tego programu 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, zostanie wyświetlony żółty pasek stanu z informacją, że funkcja IntelliSense zostanie zaktualizowana. Daje to szansę na anulowanie operacji aktualizacji. Aby uzyskać informacje na temat CMakeLists.txtprogramu , zobacz dokumentację narzędzia CMake.

Zrzut ekranu przedstawiający .txt pliku make języka C edytowanego w programie Visual Studio.

Zawiera on projekt wierszy (hello-cmake), add_subdirectory (testy), add_executable (hello hello.cpp) i zainstaluj (TARGETS hello DESTINATION hello/bin). Komunikat w górnej części okna mówi, że c plus plus informacje IntelliSense zostaną odświeżone po zakończeniu generowania pamięci podręcznej przez funkcję C Make.

Gdy tylko zapiszesz plik, krok konfiguracji zostanie uruchomiony ponownie i wyświetli 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 błędu w pliku CMakeLists.txt.

Zrzut ekranu przedstawiający błąd C Make na liście błędów programu Visual Studio.

W wierszu 3 CMakeLists.txt wyróżniono komunikat o błędzie C Make. Szczegóły dotyczą tego, że funkcja C Make nie może odnaleźć pliku konfiguracji pakietu dostarczonego przez usługę sqlite3. C Make szukał go w CMAKE_MODULE_PATH, ale nie mógł go znaleźć. Sugestią jest dodanie prefiksu instalacji "sqlite3" do CMAKE_PREFIX_PATH lub ustawienie sqlite3_DIR do katalogu zawierającego plik sqlite3Config.cmake i/lub sqlitet3-config.cmake.

Usługi językowe dla narzędzia CMake

Usługi językowe dla narzędzia CMake są dostępne w programie Visual Studio 2019 w wersji 16.5 lub nowszej. Obsługuje ona funkcje nawigacji kodu, takie jak Przejdź do definicji, Zobacz definicję i Znajdź wszystkie odwołania dla zmiennych, funkcji i elementów docelowych narzędzia CMake w plikach skryptów narzędzia CMake. Aby uzyskać więcej informacji, zobacz Nawigacja po kodzie dla skryptów CMake.

Zrzut ekranu przedstawiający okno Znajdowanie wszystkich odwołań programu Visual Studio.

Wyniki, w których można znaleźć SUPERTUX_SOURCES_CXX, są wyświetlane. Na przykład na liście (SSUPERTUX_SOURCES_CXX SORT), plik (SUPERTUX_SOURCES_CXX GLOB) itd.

Manipulowanie projektem CMake

Manipulowanie projektem CMake jest dostępne w programie Visual Studio 2019 w wersji 16.5 lub nowszej. Manipulowanie projektem umożliwia dodawanie, usuwanie i zmienianie nazw plików źródłowych i obiektów docelowych w projekcie narzędzia CMake bez ręcznego edytowania skryptów narzędzia CMake. Po dodaniu lub usunięciu plików z Eksplorator rozwiązań program 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, program Visual Studio prosi o wprowadzenie zmiany i wyświetlenie podglądu proponowanych zmian. Aby uzyskać instrukcje krok po kroku, zobacz Dodawanie, usuwanie i zmienianie nazw plików i elementów docelowych w projektach CMake.

Zrzut ekranu przedstawiający okno dialogowe Zmiany w wersji zapoznawczej programu Visual Studio.

Widok drzewa pokazuje CMakeLists.txt, w którym są dwa elementy: add_executable i zestaw. Ustawienie jest zaznaczone. W oknie podglądu zostaną wyświetlone informacje o tym, gdzie zostaną wprowadzone zmiany. Zestaw wierszy (PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" pokazuje wyróżnione "Demo.cpp" przed nawiasem zamykającym. Przycisk Zastosuj akceptuje zmianę lub możesz nacisnąć przycisk Anuluj.

Funkcja IntelliSense dla projektów CMake

Domyślnie program 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ć opcje funkcji IntelliSense przy użyciu funkcji intelliSenseMode i intelliSenseOptions na mapie dostawcy Ustawienia programu Visual Studio. Aby uzyskać więcej informacji, zobacz dokumentację mapy dostawcy Ustawienia programu Visual Studio.

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

Konfigurowanie funkcji IntelliSense przy użyciu plików łańcucha narzędzi CMake

W programie Visual Studio 2019 w wersji 16.9 lub nowszej program Visual Studio automatycznie konfiguruje funkcję 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 funkcji IntelliSense za pomocą plików łańcucha narzędzi CMake).

Integracja narzędzia Vcpkg

Projekty CMake otwarte w programie Visual Studio integrują się z narzędziem vcpkg, międzyplatformowym menedżerem zależności C/C++. Przed rozpoczęciem korzystania z programu vcpkg w programie Visual Studio należy uruchomić polecenie vcpkg integrate install. Aby uzyskać instrukcje i więcej informacji na temat narzędzia vcpkg, zobacz:

Jeśli CMakeSettings.json jest aktywnym plikiem konfiguracji, program Visual Studio automatycznie przekazuje plik łańcucha narzędzi vcpkg (vcpkg.cmake) do narzędzia CMake. To zachowanie jest wyłączone automatycznie po określeniu dowolnego 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 CMakePresets.jsonpliku . 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 Enable vcpkg integration with CMake Presets (Włączanie integracji narzędzia vcpkg z ustawieniami wstępnymi narzędzia CMake). CMakePresets.json jest dostępny w programie 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 programem Visual Studio. Aby uzyskać więcej informacji, zobacz Uruchamianie narzędzia CMake z wiersza polecenia lub potoku ciągłej integracji. CMakePresets.json Program jest obsługiwany w programie Visual Studio 2019 w wersji 16.10 lub nowszej 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ę.

Program Visual Studio 2017 ma bogatą 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 funkcji IntelliSense i przeglądania. Obsługiwane są zarówno generatory Ninja, jak i Visual Studio. Jeśli używasz generatora programu Visual Studio, generuje tymczasowy plik projektu i przekazuje go do programu 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 programowania aplikacji klasycznych z pakietami roboczymi C++ i Linux Development with C++ .

Zrzut ekranu przedstawiający Instalator programu Visual Studio. Wybrana jest karta Poszczególne składniki, na której wybrano pozycję Visual C plus oraz narzędzia dla narzędzia CMake.

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

Integracja środowiska IDE

Po wybraniu pozycji Plik > Otwórz > folder , aby otworzyć folder zawierający CMakeLists.txt plik, następuje:

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

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

  • Program 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 program Visual Studio rozpoczyna indeksowanie plików źródłowych w celu włączenia funkcji IntelliSense, przeglądania informacji, refaktoryzacji itd. Podczas pracy program Visual Studio monitoruje zmiany w edytorze, a także na dysku, aby zachować synchronizację indeksu ze źródłami.

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

Zrzut ekranu przedstawiający Eksplorator rozwiązań programu Visual Studio.

Pliki i foldery projektu CMake są widoczne. Istnieje podkatalog testów, CMakeLists.txt i hello.cpp. Istnieje folder hello-cmake-vcpkg zawierający CMakeLists.txt, CMake Ustawienia.json i hello.cpp.

Możesz również wyświetlać projekty uporządkowane logicznie według obiektów docelowych. Wybierz widok Cele z listy rozwijanej na pasku narzędzi Eksplorator rozwiązań:

Zrzut ekranu przedstawiający przycisk listy rozwijanej w programie Visual Studio Eksplorator rozwiązań, który oferuje opcję widoku obiektów docelowych narzędzia CMake. Który jest wybrany.

Program 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 dowolnym projekcie CMake, aby określić pliki źródłowe, znaleźć biblioteki, ustawić opcje kompilatora i konsolidatora oraz określić inne informacje dotyczące systemu 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 program 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 używane są dwa dodatkowe pliki JSON: CppProperties.json i tasks.vs.json. Żadna z nich nie jest odpowiednia dla projektów CMake.

Importowanie istniejącej pamięci podręcznej

Podczas importowania istniejącego CMakeCache.txt pliku program 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 wiersza polecenia lub za pomocą dowolnego narzędzia lub środowiska IDE użytego do jego wygenerowania. Nowy CMakeSettings.json plik jest umieszczany obok katalogu głównego CMakeLists.txtprojektu . Program Visual Studio generuje nową pamięć podręczną na podstawie pliku ustawień. Automatyczne generowanie pamięci podręcznej można zastąpić w oknie dialogowym Narzędzia > Opcje > ogólne narzędzia CMake>.

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

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

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

    Zrzut ekranu przedstawiający menu główne programu Visual Studio. > Wybrano opcję Otwórz plik > C Make.

    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 projektu CMake z pamięci podręcznej :

    Zrzut ekranu przedstawiający kreatora Importowanie projektu CMake z pamięci podręcznej. Ścieżka katalogu projektu CMake do zaimportowania znajduje się w polu tekstowym

    Po zakończeniu pracy kreatora nowy plik będzie widoczny CMakeCache.txt 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ę tak samo jak rozwiązanie programu Visual Studio.

  2. Kliknij prawym przyciskiem myszy CMakeLists.txt w 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 element docelowy.

  3. Z menu głównego 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 .

Zrzut ekranu przedstawiający Eksplorator rozwiązań programu Visual Studio po kliknięciu prawym przyciskiem myszy CMakeLists.txt.

Menu zawiera opcje, takie jak Dodaj, Otwórz, Konfiguruj zadania, Kompilacja, Wyczyść wszystko itd.

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.

Zrzut ekranu przedstawiający okno Lista błędów programu Visual Studio.

Ostrzeżenia kompilacji narzędzia CMake dotyczące konwersji, które mogą spowodować utratę danych, na przykład konwersję z liczby zmiennoprzecinkowej na liczbę całkowitą, są widoczne.

W folderze z wieloma miejscami docelowymi kompilacji można określić obiekt docelowy narzędzia CMake do skompilowania: wybierz element kompilacji 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 on 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).

Zrzut ekranu przedstawiający listę rozwijaną Wybierz element startowy dla projektu CMake. Możesz wybrać bieżący dokument lub hello-cmake.exe

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, zostanie wyświetlony żółty pasek stanu z informacją, że funkcja IntelliSense zostanie zaktualizowana. Daje to szansę na anulowanie operacji aktualizacji. Aby uzyskać informacje na temat CMakeLists.txtprogramu , zobacz dokumentację narzędzia CMake.

Zrzut ekranu przedstawiający .txt pliku make języka C edytowanego w programie Visual Studio.

Plik zawiera: projekt (hello-cmake), add_subdirectory (testy), add_executable (hello hello.cpp) i zainstaluj (TARGETS hello DESTINATION hello/bin). Komunikat w górnej części okna mówi, że c plus plus informacje IntelliSense zostaną odświeżone po zakończeniu generowania pamięci podręcznej przez funkcję C Make.

Gdy tylko zapiszesz plik, krok konfiguracji zostanie uruchomiony ponownie i wyświetli 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 błędu w pliku CMakeLists.txt.

Zrzut ekranu przedstawiający błąd C Make na liście błędów programu Visual Studio.

W wierszu 3 CMakeLists.txt wyróżniono komunikat o błędzie C Make. Szczegóły dotyczą tego, że funkcja C Make nie może znaleźć pliku konfiguracji pakietu dostarczonego przez usługę sqlite3. C Make szukał go w CMAKE_MODULE_PATH, ale nie mógł go znaleźć. Sugestią jest dodanie prefiksu instalacji "sqlite3" do CMAKE_PREFIX_PATH lub ustawienie sqlite3_DIR do katalogu zawierającego plik sqlite3Config.cmake i/lub sqlitet3-config.cmake.

Krok konfigurowania narzędzia CMake

Po wprowadzeniu istotnych zmian w plikach CMakeSettings.json lub CMakeLists.txt program Visual Studio automatycznie ponownie uruchomi krok konfiguracji narzędzia CMake. Jeśli krok konfigurowania zakończy się bez błędów, zebrane informacje są dostępne w funkcjach IntelliSense i usługach językowych języka C++. 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 wbudowane (w ich własnym folderze głównym kompilacji) po wybraniu tej konfiguracji. Obiekty docelowe można debugować we wszystkich projektach CMake, które uczestniczą w tej konfiguracji narzędzia CMake.

Zrzut ekranu przedstawiający menu główne programu Visual Studio otwarte w obszarze Tylko kompilacja narzędzia CMake > .

Menu kontekstowe pokazuje, co można skompilować w tym przypadku hello-cmake-a \ hello-cmake.exe (Project hello-cmake) i hello-cmake-b\hello-cmake.exe (Project hello-cmake). Ten ostatni jest wyróżniony.

Możesz ograniczyć kompilacje i sesje debugowania 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 funkcja IntelliSense i polecenia kompilacji i debugowania mają zastosowanie tylko do tych określonych projektów.

Rozwiązywanie problemów z błędami pamięci podręcznej narzędzia 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ęci podręcznej otwiera CMakeCache.txt plik z folderu głównego kompilacji w edytorze. (Wszelkie zmiany, które należy wprowadzić w tym miejscu CMakeCache.txt , 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.

  • Czyszczenie pamięci podręcznej usuwa folder główny kompilacji , tak 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 program 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ę Kompiluj z menu podręcznego. Możesz również skompilować aktualnie otwarty plik w edytorze przy użyciu głównego menu narzędzia CMake :

Zrzut ekranu przedstawiający menu kontekstowe kompilowania narzędzia CMake > . Zawiera jeden wpis: Bullet3Collision.

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 programie Visual Studio 2015 użytkownicy programu Visual Studio mogą użyć generatora CMake do generowania plików projektu MSBuild, które następnie środowisko IDE używa dla funkcji IntelliSense, przeglądania i kompilacji.

Zobacz też

Samouczek: tworzenie projektów międzyplatformowych 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
Dokumentacja wstępnie zdefiniowanej konfiguracji narzędzia CMake
vcpkg w projektach CMake
Instalowanie i używanie pakietów za pomocą narzędzia CMake w programie Visual Studio