Udostępnij za pośrednictwem


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 wyświetlić dokumentację preferowanej wersji programu Visual Studio, użyj selektora w wersji znajdującego się 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, podsystemie Windows dla systemu Linux (WSL) i systemach zdalnych z poziomu tej samej instancji 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. Program Visual Studio wywołuje cmake.exe bezpośrednio na potrzeby 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 C++ i tworzenia aplikacji na system Linux przy użyciu C++. Zarówno narzędzia CMake dla C++ w systemie Windows, jak i Linux Development with C++ są wymagane do międzyplatformowego tworzenia aplikacji z użyciem CMake.

Zrzut ekranu instalatora programu Visual Studio.

W instalatorze jest wybrana lista rozwijana Rozwój aplikacji na komputery stacjonarne z językiem C plus plus i narzędzia CMake 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 pokazany 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 poglądowa 2), jeśli CMakeLists.txt najwyższego poziomu znajduje się w podfolderze, a nie w katalogu głównym obszaru roboczego, zostanie wyświetlone pytanie, czy chcesz włączyć integrację z CMake. 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 Enter, aby otworzyć widok obiektów docelowych:

Zrzut ekranu przedstawiający okno widoków Eksplorator Rozwiązań. Widok folderu jest otwarty. Opcja Widok Celów CMake 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 budowania 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 jest obsługiwana 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.json, zobacz Configure and build with CMake Presets (Konfigurowanie i budowanie 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.json, zobacz Dostosowywanie ustawień kompilacji CMake.

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

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

Ustawienia konfiguracji C Make zostają wywołane. Pokaż powiadomienia pamięci podręcznej CMake 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, dostępne informacje wspierają działanie 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 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 Narzędzia>Opcje>CMake>Włącz szczegółowe diagnostyczne dane wyjściowe 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.

Dostosuj widok obiektów docelowych dla grup źródłowych

Domyślnie widok obiektów docelowych narzędzia CMake ignoruje następujące grupy źródłowe: pliki źródłowe, pliki nagłówkowe , zasoby , pliki obiektów . Te grupy są domyślnie uwzględniane w większości projektów narzędzia CMake i niepotrzebnie zwiększają liczbę kliknięć wymaganych do nawigowania w widoku elementów docelowych.

Możesz włączyć korzystanie z tych grup źródłowych, wybierając pozycję narzędzia Tools>Options>CMake>Włącz użycie ignorowanych grup źródłowych w widoku obiektów docelowych 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 poczynisz tutajCMakeCache.txt, zostaną usunięte, 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 skonfiguruj usuwa katalog kompilacji i ponownie konfiguruje z czystej pamięci podręcznej.

  • Konfiguracja pamięci podręcznej wymusza uruchomienie kroku generowania, nawet jeśli program Visual Studio uznaje środowisko za aktualne.

Budowanie projektów 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 uruchamiania. Wybierz preferowany element docelowy i naciśnij F5 lub wybierz przycisk Uruchom na pasku narzędzi. Projekt najpierw 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 > Kompiluj wszystko. Upewnij się, że cel CMake został już wybrany na rozwijanej liście Startup Item 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 listy błędów programu Visual Studio

Ostrzeżenia kompilacji C dotyczące konwersji, które mogą spowodować utratę danych, takie jak konwersja z liczby zmiennoprzecinkowej na liczbę całkowitą, są widoczne.

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

Na liście rozwijanej Element startowy na pasku narzędzi wyświetlane są wszystkie wykonywalne cele CMake. 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 listy rozwijanej debugowania w Visual Studio.

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

Polecenia Debuguj lub F5 najpierw skompilują projekt, jeśli zmiany zostały wprowadzone od poprzedniej kompilacji. Zmiany w pliku konfiguracji CMake (CMakePresets.json lub CMakeSettings.json) lub CMakeLists.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 celu, wybierz cel na liście rozwijanej Element startowy i wybierz pozycję Debugowanie > Ustawienia debugowania i uruchamiania dla <aktywnego celu>. 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. Aby uzyskać więcej informacji na temat debugowania Tylko mój kod, zobacz Debugowanie tylko kodu użytkownika za pomocą tylko mojego kodu.

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()

Aby uzyskać więcej informacji na temat edytowania i kontynuowania, zobacz Konfigurowanie edycji i kontynuowania (C#, VB, C++).

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ę Debug>Dołącz do procesu..., ustaw typ połączenia na SSH i wybierz docelowy punkt połączenia z listy połączeń w Menedżera 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ń

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łączenia (ustawiony na SSH), obiekt docelowy połączenia (ustawiony na demo@ 172. 20. 60. 6) oraz listę dostępnych procesów, do których można dołączyć.

Częściowa aktywacja CMake

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

Zaakceptowane właściwości to:

Nieruchomość / Własność 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 poza bieżącym obszarem roboczym są ignorowane.

W dowolnym momencie możesz uzyskać dostęp do CMakeWorkspaceSettings.json polecenia menu Project>Ustawienia obszaru roboczego CMake, 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 podejmuje próby zarządzania Twoją pamięcią podręczną ani drzewem kompilacji. Twoje niestandardowe lub preferowane narzędzia mają pełną kontrolę nad tym, jak CMake konfiguruje Twój projekt.

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 właściwość cmakeExecutable w istniejącej konfiguracji pamięci podręcznej tak, aby używać tej wersji narzędzia CMake.
  • W konfiguracji pamięci podręcznej ustaw właściwość cacheGenerationCommand, aby umożliwić programowi Visual Studio pobranie niezbędnych plików interfejsu API opartego na plikach CMake. Aby uzyskać więcej informacji na temat tej właściwości, zobacz CMakeSettings.json odniesienie.
  • 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ę Zaawansowane rozwiązywanie problemów z 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ą, CMake umieszcza pliki w ramach .cmake/api/v1/response, które Visual Studio wykorzystuje do wypełniania edytora informacjami specyficznymi dla struktury twojego 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.txt, zobacz dokumentację CMake.

Zrzut ekranu pliku CMakeLists.txt 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 linii błędu w 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. Usługi językowe obsługują funkcje nawigacji kodu, takie jak Przejdź do definicji, Zobacz definicjęi Znajdź wszystkie odwołania zmiennych, funkcji i elementów docelowych narzędzia CMake w plikach skryptów 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 dotyczące lokalizacji SUPERTUX_SOURCES_CXX są wyświetlane. Na przykład w list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) 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 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 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.

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

Widok drzewa pokazuje CMakeLists.txt, pod którym są dwa elementy: add_executable i set. 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, który odpowiada kompilatorowi i architekturze docelowej określonej przez aktywną konfigurację 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 ustawień programu Visual Studio. Aby uzyskać więcej informacji, zobacz odniesienie do mapy dostawców ustawień 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 ustawień narzędzia CMake.

Jeśli CMakePresets.json jest aktywnym plikiem konfiguracji, należy ustawić ścieżkę do vcpkg.cmake w 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 narzędzia vcpkg z ustawieniami wstępnymi 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 pliku CMakeSettings.json do narzędzia CMake. Jeśli narzędzie CMake zainstalowano z Poziomu Instalatora 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 Korzystanie z zestawu narzędzi Microsoft C++ z wiersza poleceń.

  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 dla celów IntelliSense lub przeglądania. Możesz również zaimportować istniejącą pamięć podręczną CMake.

Instalacja

Visual C++ Tools for CMake są instalowane w ramach Programowanie aplikacji pulpitowych z użyciem C++ i Programowanie dla systemu Linux z użyciem C++.

zrzut ekranu instalatora programu Visual Studio. Wybrana jest karta Poszczególne składniki, na której wybrano pozycję Visual C plus oraz narzędzia dla języka C Make.

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 co 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 wyjściowym, wraz z innymi danymi wyjściowymi z 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 najwyższego poziomu 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 C Make są widoczne. Istnieje podkatalog testów, CMakeLists.txt i hello.cpp. Istnieje folder hello-cmake-vcpkg zawierający CMakeLists.txt, CMakeSettings.json i hello.cpp.

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

Zrzut ekranu przedstawiający przycisk listy rozwijanej w programie Visual Studio Eksploratorze Rozwiązań, który oferuje opcję widoku celów CMake, zaznaczoną jako wybraną.

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 tak samo jak w dowolnym projekcie CMake, aby określić pliki źródłowe, znaleźć biblioteki, ustawić opcje kompilatora i linkera 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 pliku CMakeCache.txt program Visual Studio automatycznie wyodrębnia dostosowane zmienne i tworzy wstępnie wypełniony plik CMakeSettings.json 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 > CMake > Ogólne.

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 pozycje Plik > Otwórz > CMake:

    Zrzut ekranu menu głównego Visual Studio z wybraną opcją CMake.

    To polecenie powoduje wyświetlenie kreatora Importowanie 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 Importu projektu CMake z pamięci podręcznej

    Zrzut ekranu przedstawiający kreatora importowania projektu CMake z pamięci podręcznej. Ścieżka katalogu projektu CMake do zaimportowania powinna być umieszczona w polu tekstowym folderu.

    Po zakończeniu pracy kreatora nowy plik CMakeCache.txt będzie widoczny w Eksploratorze rozwiązań obok głównego pliku *CMakeLists.txt* w projekcie.

Budowanie projektów 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 wyświetlana jest wersja Linux-Debug lub x64-Debug. Wybierz preferowaną konfigurację i naciśnij F5 lub wybierz przycisk Uruchom (zielony trójkąt) na pasku narzędzi. Projekt najpierw 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 > Kompiluj rozwiązanie (F7 lub Ctrl+Shift+B). Upewnij się, że cel CMake został już wybrany w rozwijanym menu Element startowy na pasku narzędzi Ogólne.

Zrzut ekranu Eksploratora rozwiązań programu Visual Studio po kliknięciu prawym przyciskiem myszy na pliku 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ń kompilacji 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 C dotyczące konwersji, które mogą prowadzić do utraty danych, takie jak konwersja z liczby zmiennoprzecinkowej na liczbę całkowitą, są widoczne.

W katalogu z wieloma celami kompilacji można określić cel CMake do skompilowania: wybierz pozycję Kompiluj w menu CMake lub CMakeLists.txt menu kontekstowego, aby określić cel. Jeśli wprowadzisz 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 F5. Możesz też nacisnąć przycisk Uruchom na pasku narzędzi. Jeśli przycisk Uruchom wyświetla Wybierz element uruchamiania, kliknij strzałkę listy rozwijanej, a następnie wskaż 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ą wyboru elementu startowego dla projektu CMake. Możesz wybrać bieżący dokument lub hello-cmake.

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.txt, zobacz dokumentację CMake.

Zrzut ekranu przedstawiający plik listy make języka C edytowany w programie Visual Studio.

Plik zawiera projekt (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp) i install (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 linii błędu w 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 na opcję C Make Build Only.

Menu kontekstowe pokazuje, co można skompilować. W tym przypadku hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Projekt 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ń:

  • Wyświetl pamięć podręczną otwiera CMakeCache.txt plik z folderu głównego kompilacji w edytorze. Wszelkie zmiany, które poczynisz tutajCMakeCache.txt, zostaną usunięte, jeśli wyczyścisz pamięć podręczną. Aby wprowadzić zmiany, które pozostają po wyczyszczeniu pamięci podręcznej, sprawdź Dostosowywanie ustawień 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 wykonanie kroku generowania, nawet jeśli program Visual Studio uznaje środowisko za aktualne.

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

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 kompilacji C Make. Zawiera jeden wpis, Kolizja Kula 3.

Uruchamianie narzędzia CMake z wiersza polecenia

Jeśli narzędzie CMake zainstalowano z Poziomu Instalatora 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 poleceń.

  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.