Выпущена Visual Studio 2019
Сегодня стала доступна новая версия IDE от Microsoft: состоялся релиз Visual Studio 2019 и её «двоюродной сестры» Visual Studio 2019 for Mac.
Visual Studio находится в немного странном положении, и разработчикам впору спрашивать, почему такой релиз вообще существует. Visual Studio 2017 с момента своего выхода два года назад получила девять минорных обновлений и бесчисленные патчи. Каждый из этих релизов приносил новые фичи и багфиксы, и использование Visual Studio оказывалось сродни, например, Google Chrome, где каждая новая версия приносит стабильный поток инкрементальных улучшений.

Режим Live Share, слева код открыт в Visual Studio 2019, справа — в Visual Studio Code
И ведь эту интерактивную инкрементальную модель Microsoft продвигает (и использует) в сервисах вроде Azure DevOps, и её можно сравнить с непрерывной разработкой у ежемесячно обновляемых Office 365 и Visual Studio Code. Когда используется такой подход к разработке, кто-то может удивиться, зачем вообще было заморачиваться с «Visual Studio 2019»: давайте просто будет «Visual Studio», и она вечно будет обновляться.
Зачем придерживаться старого подхода к релизам? Есть потребители, покупающие бессрочные лицензии, а ещё новая мажорная версия позволяет легко внести определённые изменения — например, прекратить поддержку старых платформ или масштабно изменить библиотеку C++. Visual Studio 2019 (наконец) бросает поддержку Windows XP для проектов на С++, так что вам придётся использовать старый компилятор Visual Studio 2017, если хотите по-прежнему таргетироваться на давно устаревшую операционную систему. Также новая мажорная версия — это подходящий момент для больших изменений интерфейса, и первым делом при установке Visual Studio 2019 будет заметен новый экран приветствия, новый интерфейс для создания проектов, и новая строка заголовка, включающая сразу и меню приложения, и переработанный поиск фич в IDE.

Также новая версия приносит штуки, которых не было в 2017. Меня больше всего привлекает то, что дошла до стадии general availability система Live Share. Это система для совместного редактирования, которая работает и в Visual Studio, и в Visual Studio Code, позволяя парам разработчиков кодить и отлаживать вместе, при этом видя перед собой интерфейс, соответствующий их личным предпочтениям. Изначальная превью-версия Live Share, появившаяся в ноябре 2017-го, поддерживала только JavaScript (вместе с его успешной майкрософтовской разновидностью TypeScript) и C#.
В ответ на спрос со стороны пользователей в Live Share добавили C++ и Python. Пока что Python для Visual Studio всё ещё в новинку; поддержка этого скриптового языка была добавлена в Visual Studio 2017 с одним из обновлений. Visual Studio 2019 расширяет это поддержкой различных рантаймов Python (позволяя легче переключаться между интерпретаторами и версиями), более функциональным отладчиком и более умным IntelliSense-дополнением.
Разработчики на С++ получают улучшение оптимизации в компиляторе, улучшение поддержки для проектов, собранных CMake, и частичную поддержку lifetime profile — набора правил, позволяющих компилятору предупреждать о небезопасном использовании указателей и итераторов.
Теперь, когда GitHub — часть Microsoft, в Visual Studio набирает обороты интеграция с GitHub; в 2019 появляется поддержка гитхабовской модели пулл-реквестов для управления интеграцией патчей в кодовую базу прямо в IDE. Также появилась поддержка возможности “stash” из git, позволяющей сохранить набор изменений, чтобы переключиться на другую ветку без необходимости коммитить эти изменения и без риска их потерять.
И как с любой новой версией Visual Studio, тут есть обычная череда обновлений компиляторов и языковых версий: превью возможностей C# 8.0, новые рефакторинги и тому подобное.
Visual Studio for Mac (созданная на основе Xamarin IDE, когда Microsoft купил Xamarin) сегодня также была обновлена. Первая её версия, по сути, была ребрендингом приложения Xamarin Studio (с добавлением компилятора C# и .NET-библиотек от Microsoft) и имела мало отношения к «настоящей» Visual Studio.
Однако похоже, что Microsoft всерьёз старается сблизить эти продукты в тех аспектах, где это имеет смысл. В Visual Studio for Mac 2019 появилось превью нового текстового редактора, основанного на том же движке, что и в Visual Studio для Windows, с нативным для macOS интерфейсом и возможностями. Это значит, что теперь у обеих Visual Studio похожие возможности в вещах вроде IntelliSense, дополнения кода и quick-fix’ов. Новый редактор не включен по умолчанию, но его можно включить для C# и XAML, а после доведения их до стабильного состояния планируется добавить больше языков. Экран приветствия теперь тоже выглядит очень похоже на собрата из Windows:

Microsoft сближает две Visual Studio и в других областях: отладчик Unity на Mac и Windows теперь одинаковый, а в будущем апдейте намерены частично принести Windows Xamarin Forms XAML на Mac.
Помимо всего этого, есть улучшения производительности и стабильности, а также много улучшений в accessibility.
В случае с обеими версиями Visual Studio в Microsoft подчёркивают значимость пользовательского фидбека в процессе разработки. Как минорные, так и мажорные апдейты основывались на фидбеке — например, в случаях с Python и Live Share новые возможности появились как прямой ответ на запросы пользователей. Постоянный поток минорных релизов позволяет Microsoft предоставить новую функциональность пользователям гораздо быстрее, чем было бы с одними мажорными апдейтами, и эта функциональность может видоизменяться и расширяться в ответ на фидбек. По сравнению со старыми временами, когда ты заводил баги на сайте Microsoft Connect лишь для того, чтобы они канули в пучину, нынешнее положение дел — освежающее улучшение.
От переводчиков: тема Visual Studio нам близка, потому что в мае мы увидим многих её российских пользователей на нашей конференции DotNext. Раз вам интересен этот релиз, вполне возможно, вам интересно и что-то из программы DotNext.
- Visual Studio
- Visual Studio 2019
- Microsoft
- Блог компании JUG Ru Group
- .NET
Новые возможности C++ в Visual Studio 2019
В Visual Studio 2019 реализовано множество изменений и исправлений для среды Microsoft C++. Мы исправили множество ошибок и проблем с компилятором и средствами. Сообщения о многих из них были отправлены клиентами с помощью инструментов Сообщить о проблеме и Отправить предложение в разделе Отправить отзыв. Спасибо, что сообщаете нам об ошибках!
Дополнительные сведения о новых возможностях всех компонентов Visual Studio см. на странице What’s new in Visual Studio 2019 (Новые возможности Visual Studio 2019). Сведения о новых возможностях для C++ в Visual Studio 2017 см. в статье What’s New for C++ in Visual Studio 2017 (Новые возможности для C++ в Visual Studio 2017). Сведения о новых возможностях для C++ в Visual Studio 2015 и более ранних версиях см. в статье Visual C++ What’s New 2003 through 2015 (Новые возможности Visual C++ в версиях с 2003 по 2015). Дополнительные сведения см. в документации по Microsoft C++: новые возможности.
Новые возможности C++ в Visual Studio версии 16.11
Сводку о новых возможностях и исправлениях ошибок в Visual Studio версии 16.11 см. в статье Новые возможности Visual Studio 2019 версии 16.11.
- Теперь компилятор поддерживает /std:c++20 режим компилятора. Ранее функции C++20 были доступны только в /std:c++latest режиме в Visual Studio 2019. Функции, изначально требовавшие включения режима /std:c++latest , теперь работают в режиме /std:c++20 или более поздних версий в последних версиях Visual Studio.
- Средства LLVM, поставляемые с Visual Studio, были обновлены до LLVM 12. Дополнительные сведения см. в заметках о выпуске LLVM.
- Поддержка Clang-cl была обновлена до LLVM 12.
Новые возможности C++ в Visual Studio версии 16.10
Сводку о новых возможностях и исправлениях ошибок в Visual Studio версии 16.10 см. в статье Новые возможности Visual Studio 2019 версии 16.10.
- Все функции C++20 теперь доступны в режиме /std:c++latest . Хотя реализация msvc стандартов C++20 (в настоящее время опубликованная ISO) является полной, некоторые ключевые функции библиотеки C++20, как ожидается, будут изменены предстоящими отчетами о дефектах (исправления ошибок ISO C++20), которые могут изменить их несовместимым с ABI способом. Дополнительные сведения см. в разделе Проблема Майкрософт/STL 1814.
- В версии 16.10 добавлена поддержка немедленных функций и constinit C++20.
- Заключительные части : новые часы, корректировочные секунды, часовые пояса и анализ.
- Реализация для форматирования текста.
Новые возможности C++ в Visual Studio версии 16.9
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.9 см. в статье Новые возможности Visual Studio 2019 версии 16.9.
- Санитайзер адресов:
- Предоставление поддержки санитайзера адресов в Windows в экспериментальном режиме завершено, и теперь она общедоступна.
- Расширена поддержка RtlAllocateHeap , устранена проблема совместимости для перехватчиков RtlCreateHeap и RtlAllocateHeap при создании исполняемых пулов памяти.
- Добавлена поддержка устаревшего семейства функций работы с памятью GlobalAlloc и LocalAlloc . Вы можете включить эти перехватчики, установив флаг среды ASAN_OPTIONS=windows_hook_legacy_allocators=true .
- Обновлены сообщения об ошибках, связанные с пересечением теневой памяти и сбоями перехвата, чтобы предоставлять четкие сведения о проблемах и методах решения.
- Интеграция с интегрированной средой разработки теперь поддерживает полную коллекцию исключений, о которых может сообщать ASan.
- Компилятор и компоновщик предложат выдавать отладочную информацию, если обнаружат выполнение сборки с помощью ASan без выдачи отладочной информации.
- Улучшена стабильность и функциональные возможности IntelliSense по предоставлению имен импортированных модулей и блоков заголовков.
- Добавлена функция «Перейти к определению» для импорта модулей, поддержка индексирования export и более точная ссылка на модуль для модулей с одинаковым именем.
- Улучшена совместимость IntelliSense с языком C++ за счет добавления поддержки инициализации копированием для временной прямой инициализации в ссылке, __builtin_memcpy и __builtin_memmove , исправления несогласованности между функциями constexpr и consteval , продлеваемых на все время существования временных элементов в константных выражениях, а также подобных типов и привязки ссылок.
- Добавлено завершение для make_unique, make_shared, emplace и emplace_back, что обеспечивает завершение на основе указанного параметра типа.
Новые возможности C++ в Visual Studio версии 16.8
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.8 см. в статье Новые возможности Visual Studio 2019 версии 16.8.
- Сопрограммы C++20 теперь поддерживаются в режиме /std:c++latest (или /std:c++20 начиная с Visual Studio 2019 версии 16.11) и заголовке .
- Теперь технология IntelliSense обеспечивает поддержку заголовков C++20 и , а также переименование и просмотр определений концепций.
- Наша версия библиотеки STL теперь поддерживает большинство диапазонов C++20.
- Компилятором MSVC теперь поддерживаются условно тривиальные специальные функции-члены.
- C11 и C17 теперь поддерживаются для параметров /std:c11 /std:c17 и .
- Внедрены также такие дополнительные улучшения STL, как полная поддержка std::atomic_ref , std::midpoint , std::lerp и std::execution::unseq , оптимизации для std::reverse_copy и многое другое.
- Обновленная версия CMake поставляется с Visual Studio для CMake 3.18.
- Наши средства анализа кода теперь поддерживают SARIF 2.1 — отраслевой стандартный формат журнала статического анализа.
- Отсутствующие средства сборки в проектах Linux теперь будут вызывать предупреждение на панели инструментов и четкое описание отсутствующих средств в списке ошибок.
- Теперь можно выполнять отладку дампов ядра Linux в удаленной системе Linux или WSL непосредственно из Visual Studio.
- Для создания комментариев в C++ Doxygen мы добавили дополнительные варианты стиля комментариев ( /*! и //! ).
- Дополнительные объявления о vcpkg.
- Включена поддержка компилятора для лямбда-выражений в невычисляемых контекстах.
- Повышена производительность ссылки /DEBUG:FULL путем создания PDB-файлов в многопоточном режиме. Для некоторых крупных приложений и AAA-игр компоновка выполняется в 2–4 раза быстрее.
- Отладчик Visual Studio теперь поддерживает char8_t .
- Включена поддержка проектов ARM64 с использованием clang-cl.
- Включена поддержка встроенных объектов Intel AMX.
Новые возможности C++ в Visual Studio версии 16.7
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.7 см. в статье Новые возможности Visual Studio 2019 версии 16.7.
- Теперь в рамках удаленной поддержки C++ поддерживается более широкий набор дистрибутивов и оболочек Linux, включая sh, csh, bash, tsch, ksh, zsh и dash. Можно переопределить возможность выбора оболочки для удаленного подключения, изменив свойство новой оболочки с помощью ConnectionManager.exe. Эта поддержка была протестирована в проектах Linux на основе MSBuild и проектах CMake, предназначенных для удаленной системы Linux или WSL.
- Теперь вы можете использовать Ninja (систему сборки, которая очень быстро оценивает добавочные сборки) для оптимизации времени добавочной сборки для проектов Linux на основе MSBuild. Чтобы включить эту функцию, задайте параметру «Включить добавочную сборку» значение «С Ninja» на странице свойств «Общие». Система Ninja (ninja-build) должна быть установлена в удаленной системе Linux или WSL.
- Реализованы новые функции стандартной библиотеки C++ 20. Подробный список см. в журнале изменений STL на GitHub.
- Теперь можно изменять удаленные подключения SSH и задавать удаленные подключения SSH по умолчанию в диспетчере подключений. Это означает, что можно изменить существующее удаленное подключение (например, если изменился его IP-адрес) и задать используемые по умолчанию подключения в файлах CMakeSettings.json и launch.vs.json. Удаленные подключения SSH позволяют создавать и отлаживать проекты C++ в удаленной системе Linux непосредственно из Visual Studio.
- Улучшенная поддержка IntelliSense для Clang в Windows (clang-cl) в Visual Studio. Путь включения clang теперь содержит библиотеки clang, мы улучшили отображение волнистых линий в редакторе при использовании библиотеки std, а также добавили поддержку языка C++2a в режиме clang.
- теперь вы можете изучать ошибки в коде и просматривать другие предлагаемые быстрые исправления в проектах C++. Включите эту функцию в разделе Сервис > Параметры > Текстовый редактор > C/C++ > Экспериментальное. Установите для параметра Disable Experimental Code Linter (Отключить экспериментальный анализатор кода) значение False. Дополнительные сведения см. в Блоге группы разработчиков C++.
- Мы добавили четыре новых правила анализа кода для включения дополнительных функций безопасности в C++ : C26817, C26818, C26819 и C26820.
- Мы добавили превосходную поддержку отладки проектов CMake в удаленных системах с помощью gdbserver.
- Вы сможете легко находить ошибки повреждения памяти с помощью экспериментальной реализации AddressSanitizer для C++ в Visual Studio, которая теперь доступна для собственных проектов x64. Также поддерживаются среды выполнения отладки ( /MTd , /MDd , /LDd ).
- Технология IntelliSense теперь обеспечивает базовую поддержку концепций, назначенных инициализаторов и некоторых других возможностей C++20.
- Файлы с расширением .ixx и .cppm теперь распознаются как файлы C++ и обрабатываются как таковые с использованием маркера синтаксиса и технологии IntelliSense.
Новые возможности C++ в Visual Studio версии 16.6
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.6 см. в статье Новые возможности Visual Studio 2019 версии 16.6.
- Улучшена возможность создания комментариев Doxygen/XML. Автоматическое создание заглушки с комментариями Doxygen или XML при вводе /// или /** над функцией. Теперь они также отображаются в подсказках с краткими сведениями.
- Поддержка Ninja для CMake для Linux/WSL: используйте Ninja в качестве базового генератора при создании проектов CMake в WSL или удаленной системе. Ninja теперь является генератором по умолчанию при добавлении новой конфигурации Linux или WSL.
- Отладочные шаблоны для удаленной отладки CMake: мы упростили шаблоны для отладки проектов CMake в удаленной системе Linux или WSL с помощью gdb.
- Базовая поддержка концепций C++20. Теперь IntelliSense распознает концепции C++20 и предлагает их в списке членов.
Новые возможности C++ в Visual Studio версии 16.5
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.5 см. в статье Новые возможности Visual Studio 2019 версии 16.5.
- Поддержка модели команд для дополнений IntelliCode и переменных-членов. Разработчики C++ теперь могут обучать модели IntelliCode по собственным базам кода. Мы называем это моделью завершения команды, так как вы получаете преимущества командной работы. Кроме того, мы улучшили предложения IntelliCode для переменных-членов.
- Улучшения IntelliSense:
- IntelliSense теперь отображает более удобочитаемые имена типов при работе со стандартной библиотекой.
- Мы добавили возможность переключения функций ввода, пробела и табуляции в качестве символов фиксации и возможность выбора клавиши TAB для вставки фрагмента кода. Эти параметры расположены в разделе Сервис > Параметры > Текстовый редактор > C/C++ > Дополнительно > IntelliSense.
- Копирование исходного файла для проектов CMake, предназначенных для удаленной системы Linux, было оптимизировано. Visual Studio теперь сохраняет файл отпечатка последнего набора источников, скопированного удаленно, и оптимизирует поведение в зависимости от количества измененных файлов.
- Теперь функции навигации по коду, такие как переход к определению и поиск всех ссылок, поддерживаются для функций, переменных и целевых объектов в файлах скриптов CMake.
- Добавляйте, удаляйте и переименовывайте исходные файлы и целевые объекты в проектах CMake из IDE без изменения скриптов CMake вручную. При добавлении или удалении файлов с помощью обозревателя решений Visual Studio автоматически отредактирует проект CMake. Кроме того, можно добавлять, удалять и переименовывать целевые объекты проекта из представления целевых объектов обозревателя решений.
Новые возможности C++ в Visual Studio версии 16.4
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.4 см. в статье Новые возможности Visual Studio 2019 версии 16.4.
- В Code Analysis реализована встроенная поддержка средства Clang-Tidy для проектов MSBuild и CMake при использовании набора инструментов MSVC или Clang. Проверки clang-tidy могут выполняться в рамках анализа кода в фоновом режиме, а их результаты отображаются в виде предупреждений в редакторе (подчеркивания) и в Списке ошибок.
- Теперь у проектов Visual Studio CMake есть обзорные страницы, которые помогут приступить к работе с кросс-платформенной разработкой. Эти страницы являются динамическими и помогают подключиться к системе Linux и добавить конфигурацию Linux или WSL в проект CMake.
- Раскрывающееся меню запуска для проектов CMake теперь отображает последние использованные целевые объекты и может быть отфильтровано.
- C++/CLI теперь поддерживает взаимодействие с .NET Core 3.1 и более поздними версиями в Windows.
- Теперь можно включить ASan для проектов, скомпилированных с помощью MSVC в Windows, для инструментирования кода C++ в среде выполнения, чтобы обнаруживать ошибки памяти.
- Обновления стандартной библиотеки C++ MSVC:
- C++17 Реализована общая точность to_chars() , выполнение P0067R5 Преобразования элементарных строк (charconv). Это завершает реализацию всех функций библиотеки в C++ 17 Standard.
- C++20. Реализовано P1754R1 Переименование концепций в standard_case. Чтобы включить эти возможности, используйте параметр компилятора /std:c++latest (или /std:c++20 начиная с Visual Studio 2019 версии 16.11). Этот параметр также можно задать на странице свойств проекта (Свойства конфигурации > C/C++ > Язык) с помощью свойства Стандарт языка C++.
Новые возможности C++ в Visual Studio версии 16.3
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.3 см. в статье Новые возможности Visual Studio 2019 версии 16.3.
- Теперь разработчики C++ могут переключать комментарии строк с помощью сочетания клавиш CTRL + K, CTRL + / .
- Списки элементов IntelliSense теперь отфильтрованы на основе квалификаторов типа, например const std::vector теперь отфильтровывает такие методы, как push_back .
- Мы добавили эти возможности стандартной библиотеки C++20 (доступны в /std:c++latest или /std:c++20 начиная с Visual Studio 2019 версии 16.11):
- P0487R1: Исправление operator>>(basic_istream&, CharT*)
- P0616R0: Использование move() в
- P0758R1: is_nothrow_convertible
- P0734R0: Расширения C++ для основных понятий
- P0898R3: Основные понятия стандартной библиотеки
- P0919R3: Разнородный поиск для неупорядоченных контейнеров
Новые возможности C++ в Visual Studio версии 16.2
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.2 см. в статье Новые возможности Visual Studio 2019 версии 16.2.
- Для локальных проектов CMake с Clang при анализе кода теперь выполняется проверка совместимости с Clang в рамках анализа кода в фоновом режиме, результаты которой отображаются в виде предупреждений в редакторе (подчеркивания) и в Списке ошибок.
- Обновлен файл заголовка для P0067R5 (простые преобразования строк) из C++17.
- Добавлены перегрузки to_chars() для плавающей запятой с точностью chars_format::fixed и chars_format::scientific (единственная еще не реализованная часть — chars_format::general precision ).
- Сделана оптимизация chars_format::fixed с кратчайшей длиной.
- Доступно в /std:c++latest (или /std:c++20 начиная с Visual Studio 2019 версии 16.11):
- P0020R6 — atomic .
- P0463R1 — порядок перечисления.
- P0482R6 — char8_t тип для символов и строк UTF-8.
- P0653R2 — to_address() для преобразования указателя в необработанный указатель.
- P0600R1 — [[nodiscard]] в библиотеке.
- P0754R2 — файл заголовка .
- P0771R1 — конструктор переноса std::function должен быть noexcept .
Новые возможности C++ в Visual Studio версии 16.1
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.1 см. в статье Новые возможности Visual Studio 2019 версии 16.1.
компилятор C++
- В компиляторе C++ были реализованы следующие возможности C++20, доступные в /std:c++latest (или /std:c++20 начиная с Visual Studio 2019 версии 16.11):
- улучшена возможность поиска шаблонов функций с помощью зависящего от аргументов поиска выражений вызова функции с явно заданными аргументами шаблона (P0846R0);
- выделена инициализация (P0329R4), что позволяет выбирать определенные члены в агрегатной инициализации, например с помощью синтаксиса Type t < .member = expr >.
Улучшения стандартной библиотеки C++
- В реализацию стандартной библиотеки C++, доступной в /std:c++latest , добавлены следующие возможности C++20:
- starts_with и ends_with для basic_string и basic_string_view .
- contains для ассоциативных контейнеров;
- remove , remove_if и unique для list и forward_list теперь возвращают size_type ;
- shift_left и shift_right добавлены в .
IDE C++
IntelliCode для C++
IntelliCode теперь предоставляется в виде дополнительного компонента в рабочей нагрузке Разработка классических приложений на C++ . Подробные сведения см. в записи блога Improved C++ IntelliCode now Ships with Visual Studio 2019 (Улучшенный компонент IntelliCode для C++ теперь предоставляется с Visual Studio 2019).
IntelliCode использует обучение и контекст кода для вывода тех вариантов, которые вы чаще всего используете, в верхней части списка завершения. Он также часто устраняет необходимость прокручивать список. IntelliCode для C++ работает наиболее эффективно при использовании популярных библиотек, таких как стандартная библиотека.
Новые функции IntelliCode (пользовательские модели, поддержка C++ и вывод EditorConfig) отключены по умолчанию. Чтобы включить их, откройте меню Средства > Параметры > IntelliCode > Общие. В этой версии IntelliCode повышен уровень точности и включена поддержка бесплатных функций. Дополнительные сведения см. в разделе Рекомендации по завершению кода на базе ИИ в C++ через IntelliCode.
Улучшение подсказок
- При отображении подсказок теперь учитывается семантическая подсветка в редакторе. Она также содержит новую ссылку Поиск в Интернете , которая будет искать в веб-документации сведения о конструкции кода с наведением указателя мыши. Для кода, подчеркнутого волнистой красной линией, ссылка в подсказке позволяет выполнить поиск сведений об ошибке в Интернете. То есть вам не придется повторно вводить сообщение в браузере. Подробные сведения см. в записи блога Quick Info Improvements in Visual Studio 2019: Colorization and Search Online (Улучшения подсказок в Visual Studio 2019: подсветка и поиск в Интернете).
Общие улучшения
- Теперь панель шаблонов может заполнять раскрывающееся меню на основе экземпляров шаблона в базе кода.
- Лампочки для отсутствующих директив #include , которые могут быть установлены с помощью vcpkg, и автозавершение доступных пакетов для директивы CMake find_package .
- Изменена страница свойств Общие для проектов C++. Некоторые параметры теперь отображаются на новой странице Дополнительно. На странице Дополнительно также находятся новые свойства для архитектуры набора инструментов, отладочных библиотек, дополнительного номера версии набора инструментов MSVC и сборок Unity (JUMBO).
Поддержка CMake
- Версия CMake, которая поставляется с Visual Studio, обновлена до версии 3.14. В этой версии появилась встроенная поддержка генераторов MSBuild, предназначенных для проектов Visual Studio 2019, а также API интеграции интегрированной среды разработки на основе файлов.
- Добавлены усовершенствования для редактора параметров CMake, в том числе поддержка для подсистемы Windows для Linux (WSL) и конфигураций из существующих кэшей, изменения корневых каталогов сборки и установки по умолчанию и поддержка переменных среды в конфигурациях Linux CMake.
- Завершения и краткие сведения для встроенных команд, переменных и свойств CMake упрощают редактирование файлов CMakeLists.txt .
- Встроенная поддержка редактирования, сборки и отладки проектов CMake с Clang/LLVM. Подробные сведения см. в записи блога Clang/LLVM Support in Visual Studio (Поддержка Clang/LLVM в Visual Studio).
Linux и подсистема Windows для Linux.
- Теперь поддерживается AddressSanitizer (ASan) в Linux и кроссплатформенных проектах CMake. Подробные сведения см. в записи блога AddressSanitizer (ASan) for the Linux Workload in Visual Studio 2019 (AddressSanitizer (ASan) для рабочей нагрузки Linux в Visual Studio 2019).
- Интегрирована поддержка Visual Studio для использования C++ с подсистемой Windows для Linux (WSL). Теперь можно использовать локальную подсистему Windows для Linux (WSL) с C++ без дополнительной настройки или SSH-подключения благодаря встроенной поддержке Visual Studio. Подробные сведения см. в записи блога C++ with Visual Studio 2019 and Windows Subsystem for Linux (WSL) (C++ с Visual Studio 2019 и подсистемой Windows для Linux (WSL)).
Анализ кода
- Добавлены новые быстрые исправления для проверок неинициализированных переменных. В меню со значком лампочки для соответствующих строк доступны предупреждения Code Analysis C6001. Использование неинициализированной памяти и C26494 VAR_USE_BEFORE_INIT. Они включены по умолчанию в минимальном рекомендуемом корпорацией Майкрософт наборе правил для машинного кода и наборе правил для типа C++ Core Check соответственно. Подробные сведения см. в записи блога New code analysis quick fixes for uninitialized memory (C6001) and use before init (C26494) warnings (Новые быстрые исправления анализа кода для предупреждений о неинициализированной памяти (C6001) и использовании переменных перед инициализацией (C26494)).
Удаленные сборки
- Теперь при разработке для Linux можно изолировать компьютеры удаленной сборки от компьютеров удаленной отладки (доступно для проектов MSBuild и CMake).
- Улучшенное ведение журнала для удаленных подключений упрощает диагностику проблем, связанных с кроссплатформенной разработкой.
Новые возможности C++ в Visual Studio версии 16.0
Сводные сведения о новых возможностях и исправлениях ошибок в Visual Studio версии 16.0 см. в статье Новые возможности Visual Studio 2019 версии 16.0.
компилятор C++
- Улучшенная поддержка функций C++17 и корректирующие исправления, а также экспериментальная поддержка функций C++20, таких как модули и сопрограммы. Подробные сведения см. в статье Улучшения соответствия C++ в Visual Studio 2019.
- Параметр /std:c++latest теперь поддерживает функции C++20, которые не обязательно завершены, включая начальную поддержку оператора C++20 («космический корабль») для трехстороннего сравнения.
- Параметр компилятора C++ /Gm теперь считается устаревшим. Рекомендуется отключить параметр /Gm в скриптах сборки, если он задан явно. Можно просто проигнорировать предупреждение об устаревании /Gm , так как оно не считается ошибкой при использовании режима «Обрабатывать предупреждения как ошибки» ( /WX ).
- В MSVC уже внедряются функции из проекта стандарта C++20 с флагом /std:c++latest , поэтому /std:c++latest теперь несовместим с /clr (все варианты), /ZW и /Gm . В Visual Studio 2019 используйте режим /std:c++17 или /std:c++14 при компиляции с параметром /clr , /ZW или /Gm (но обратите внимание на предыдущий пункт).
- Предкомпилированные заголовки больше не создаются по умолчанию для консоли C++ и настольных приложений.
Создание кода, безопасность, диагностика и управления версиями
Доступен параметр /Qspectre для более эффективного анализа и устранения рисков, связанных с уязвимостью Spectre 1-го варианта (CVE-2017-5753). Дополнительные сведения см. в записи блога Устранение рисков Spectre в MSVC.
Улучшения стандартной библиотеки C++
- Реализация дополнительных функций библиотек и корректирующих исправлений C++17 и C++20. Подробные сведения см. в статье Улучшения соответствия C++ в Visual Studio 2019.
- Для улучшения читаемости кода в заголовках стандартной библиотеки C++ используется Clang-Format.
- Так как Visual Studio теперь поддерживает функцию «Только мой код» для C++, стандартная библиотека больше не должна предоставлять настраиваемый механизм для std::function и std::visit , чтобы обеспечить такой же результат. Удаление этого механизма будет почти незаметным для пользователя. Одно исключение: компилятор больше не будет сообщать о наличии проблем в строках 15732480 и 16707566 для или .
Повышение производительности и пропускной способности в компиляторе и стандартной библиотеке
- Реализованы усовершенствования пропускной способности сборки, включая обработку компоновщиком ввода-вывода файлов и время компоновки при объединении и создании типа PDB.
- Добавлена базовая поддержка векторизации OpenMP SIMD. Вы можете включить ее с помощью нового параметра компилятора /openmp:experimental . Эта опция позволяет при необходимости векторизовать циклы, аннотированные с #pragma omp simd . Векторизация не гарантируется, и циклы с аннотацией, но без векторизации, будут выдавать предупреждение. Предложения SIMD не поддерживаются, они просто игнорируются с предупреждением.
- Добавлен новый параметр встраивания командной строки /Ob3 , который представляет собой более активную версию /Ob2 . /O2 (оптимизация двоичного файла для скорости) по-прежнему подразумевает /Ob2 по умолчанию. Если обнаружится, что компилятор недостаточно активно встраивает, попробуйте передать /O2 -Ob3 .
- Добавлена поддержка встроенных функций Short Vector Math Library (SVML). Эти функции вычисляют 128-разрядные, 256-разрядные или 512-разрядные векторные эквиваленты. Мы добавили их для поддержки векторизации вручную циклов с вызовами функций математических библиотек и некоторых других операций, таких как целочисленное деление. См. раздел Руководство по встроенным функциям Intel с определениями поддерживаемых функций.
- Новые и улучшенные оптимизации:
- Свертывание констант и арифметические упрощения для выражений с помощью встроенных функций SIMD (вектор) для чисел с плавающей запятой и целых чисел.
- Более эффективный анализ для извлечения данных из потока управления (инструкции if/else/switch) для удаления ветвей, которые всегда имеют значение true или false.
- Улучшенное развертывание memset для использования векторных инструкций SSE2.
- Улучшенное удаление бесполезных копий структур или классов, особенно для программ C++, которые передают по значению.
- Улучшена оптимизация кода с использованием memmove , например конструкции std::copy или std::vector и std::string .
IDE C++
Поддержка Live Share C++
Live Share теперь поддерживает C++, позволяя разработчикам, использующим Visual Studio или Visual Studio Code, сотрудничать в режиме реального времени. Дополнительные сведения см. в статьях Объявление Live Share для C++: общий доступ и совместная работа в режиме реального времени
Шаблон IntelliSense
В строке шаблона теперь используется пользовательский интерфейс Окно просмотра, а не модальное окно, поддерживаются вложенные шаблоны и автоматически заполняются аргументы по умолчанию в Окне просмотра. Дополнительные сведения см. в статье Усовершенствования шаблона IntelliSense для Visual Studio 2019, предварительная версия 2. Раскрывающийся список Недавно использовавшиеся в строке шаблона позволяет быстро переключаться между предыдущими наборами аргументов шаблона.
Новый интерфейс начального окна
При запуске интегрированной среды разработки откроется новое начальное окно. С помощью элементов в нем можно открыть последние проекты, клонировать код из системы управления версиями, открыть локальный код как решение или папку и создать новый проект. Диалоговое окно создания проекта также теперь ориентировано на поиск и фильтрацию.
Новые имена для некоторых шаблонов проектов
Мы изменили несколько имен и описаний шаблонов проектов в соответствии с обновленным диалоговым окном создания проекта.
Различные улучшения производительности
Visual Studio 2019 включает в себя следующие возможности, которые помогут сделать процесс кодирования более простым и интуитивным:
- Быстрые исправления для:
- Добавление отсутствующего оператора #include
- NULL — nullptr
- Добавление недостающих точек с запятой.
- Разрешение отсутствующего пространства имен или области
- Замена неправильных операндов косвенного обращения ( * на & и & на * )
Поддержка CMake
- Поддержка CMake 3.14
- Visual Studio теперь может открыть существующие кэши CMake, созданные внешними средствами, например CMakeGUI или пользовательскими системами мета-сборки, или создать скрипты, которые сами вызывают cmake.exe.
- Усовершенствование производительности IntelliSense.
- Новый редактор параметров предоставляет альтернативу редактированию файла CMakeSettings.json вручную и частичное равенство с CMakeGUI.
- Visual Studio помогает начать разработку на C++ с помощью CMake в Linux, определяя наличие совместимой версии CMake на компьютере Linux. Если она отсутствует, предлагается ее установить.
- Несовместимые параметры в CMakeSettings, например несоответствие архитектур или несовместимые параметры генератора CMake, выделены волнистыми линиями в редакторе JSON и отображаются в списке ошибок.
- Цепочка инструментов vcpkg автоматически обнаруживается и включается для проектов CMake, которые открыты в интегрированной среде разработки, после запуска vcpkg integrate install . Это поведение можно отключить, указав пустой файл цепочки инструментов в CMakeSettings.
- Проекты CMake теперь включают отладку «Только мой код» по умолчанию.
- Предупреждения статического анализа теперь обрабатываются в фоновом режиме и отображаются в редакторе для проектов CMake.
- Более понятные сообщения о конце и начале сборки и конфигурации для проектов CMake и поддержка пользовательского интерфейса хода сборки Visual Studio. Кроме того, теперь есть параметр детализации CMake в разделе Сервис > Параметры для настройки уровня детализации сообщений о сборке и конфигурации CMake в окне вывода.
- Параметр cmakeToolchain теперь поддерживается в CMakeSettings.json для указания цепочек инструментов без изменения командной строки CMake вручную.
- Новое сочетание клавиш для меню Собрать все — CTRL+SHIFT+B.
Интеграция IncrediBuild
IncrediBuild теперь включается в виде дополнительного компонента в рабочую нагрузку Разработка классических приложений на C++ . Монитор сборки IncrediBuild полностью интегрирован в IDE Visual Studio. Подробные сведения см. в записи блога Visualize your build with IncrediBuild’s Build Monitor and Visual Studio 2019 (Визуализация сборки с помощью монитора сборки IncrediBuild и Visual Studio 2019).
Отладка
- Для приложений на C++, работающих в Windows, PDB-файлы теперь загружаются в отдельном 64-разрядном процессе. Это изменение устраняет ряд сбоев, вызванных нехваткой памяти для отладчика. Например, были возможны сбои при отладке приложений, содержащих большое количество модулей и PDB-файлов.
- Поиск включен в окнах контрольных значений, видимых переменных и локальных переменных.
Разработка классических приложений для Windows на C++
- Следующие мастера C++, ATL и MFC больше не доступны:
- Мастер компонентов ATL COM+ 1.0
- Мастер компонентов ATL ASP
- Мастер поставщика ATL OLE DB
- Мастер страницы свойств ATL
- Мастер потребителя ATL OLE DB
- Потребитель ODBC MFC
- Класс MFC из элемента управления ActiveX
- Класс MFC из TypeLib.
Пример кода для этих технологий архивируется в Microsoft Learn и репозитории VCSamples GitHub.
Разработка мобильных приложений на C++ (для iOS и Android)
C++ для Android теперь по умолчанию равняется на Android SDK 25 и пакет NDK для Android 16b.
Набор средств платформы Clang/C2
Экспериментальный компонент Clang/C2 удален. Для обеспечения полного соответствия стандартам C++ используйте набор инструментов MSVC с параметрами /permissive- и /std:c++17 или же цепочку инструментов Clang/LLVM для Windows.
Анализ кода
- Анализ кода теперь выполняется автоматически в фоновом режиме. Предупреждения отображаются зелеными волнистыми линиями в редакторе при вводе. Дополнительные сведения см. в разделе Анализа кода в редакторе в Visual Studio 2019, предварительная версия 2.
- Новые экспериментальные правила ConcurrencyCheck для хорошо известных типов стандартной библиотеки из заголовка . Дополнительные сведения см. в разделе Параллельный анализ кода в Visual Studio 2019.
- Обновленная частичная реализация инструмента проверки профиля времени существования для обнаружения висячих указателей и ссылок. Дополнительные сведения см. в разделе Обновление профиля времени существования в Visual Studio 2019, предварительная версия 2.
- Дополнительные проверки сопрограмм, включая C26138, C26810, C26811, и экспериментальное правило C26800. Дополнительные сведения см. в разделе Новые проверки анализа кода в Visual Studio 2019: использование после перемещения и сопрограмма.
Модульное тестирование
Шаблон управляемого тестового проекта C++ больше не доступен. Вы можете продолжить использование платформы управляемых тестов C++ в существующих проектах. Но для новых модульных тестов мы рекомендуем использовать собственные тестовые платформы, для которых Visual Studio предоставляет шаблоны (MSTest, Google Test), или шаблон управляемого тестового проекта C#.
Какой компилятор в visual studio 2019
PostgreSQL может быть собран с помощью компилятора Visual C++ от Microsoft. Этот компилятор есть в пакетах Visual Studio , Visual Studio Express и в некоторых версиях Microsoft Windows SDK . Если у вас ещё не установлена среда Visual Studio , проще всего будет использовать компиляторы из Visual Studio 2019 или из Windows SDK 10 , которые Microsoft распространяет бесплатно.
С применением инструментария Microsoft Compiler возможна и 32-, и 64-битная сборка. 32-битную сборку PostgreSQL можно произвести с использованием Visual Studio 2005 — Visual Studio 2019 (включая редакции Express), а также отдельных выпусков Windows SDK версии с 6.0 по 10. Для 64-битных сборок также можно использовать Microsoft Windows SDK версии с 6.0a по 10 или Visual Studio 2008 и новее. Компиляция для систем, начиная с Windows XP и Windows Server 2003 , поддерживается при использовании Visual Studio 2005 — Visual Studio 2013 . При сборке с Visual Studio 2015 поддерживаются системы, начиная с Windows Vista и Windows Server 2008 . При сборке с Visual Studio 2017 и Visual Studio 2019 поддерживаются системы, начиная с Windows 7 SP1 и Windows Server 2008 R2 SP1 .
Инструменты для компиляции с помощью Visual C++ или Platform SDK находятся в каталоге src/tools/msvc . При сборке убедитесь, что в системном пути PATH не подключаются инструменты из набора MinGW или Cygwin . Также убедитесь, что в пути PATH указаны каталоги всех необходимых инструментов Visual C++. Если вы используете Visual Studio , запустите Visual Studio Command Prompt . Если вы хотите собрать 64-битную версию, вы должны выбрать 64-битную версию данной оболочки, и наоборот. Если вы используете Microsoft Windows SDK , запустите через стартовое меню, подменю SDK оболочку CMD shell . В последних версиях SDK можно изменить целевую архитектуру процессора, вариант сборки и целевую ОС с помощью команды setenv , например после setenv /x86 /release /xp будет получена выпускаемая 32-битная сборка для Windows XP. О других параметрах setenv можно узнать с ключом /? . Все команды должны запускаться из каталога src\tools\msvc .
До начала сборки может потребоваться отредактировать файл config.pl и изменить в нём желаемые параметры конфигурации или пути к сторонним библиотекам, которые будут использоваться. Для получения конфигурации сначала считывается и разбирается файл config_default.pl , а затем применяются все изменения из config.pl . Например, чтобы указать, куда установлен Python , следует добавить в config.pl :
$config-> = 'c:\python26';
Вам нужно задать только те параметры, которые отличаются от заданных в config_default.pl .
Если вам необходимо установить какие-либо другие переменные окружения, создайте файл с именем buildenv.pl и поместите в него требуемые команды. Например, чтобы добавить путь к bison, которого нет в PATH, создайте файл следующего содержания:
$ENV=$ENV . ';c:\some\where\bison\bin';
16.1.1. Требования
Для сборки PostgreSQL требуется следующее дополнительное ПО. Укажите каталоги, в которых находятся соответствующие библиотеки, в файле конфигурации config.pl .
Microsoft Windows SDK
Если с вашим инструментарием для разработки не поставляется поддерживаемая версия Microsoft Windows SDK , рекомендуется установить последнюю версию SDK (в настоящее время 10), которую можно загрузить с https://www.microsoft.com/download/.
Устанавливая SDK, вы всегда должны выбирать для установки пункт Windows Headers and Libraries (Заголовочные файлы и библиотеки Windows). Если вы установили Windows SDK , включая Visual C++ Compilers , Visual Studio для сборки вам не нужна. Обратите внимание, что с версии 8.0a в SDK для Windows не включается полное окружение для сборки в командной строке. ActiveState Perl
ActiveState Perl требуется для запуска скриптов, управляющих сборкой. Perl из MinGW или Cygwin работать не будет. ActiveState Perl также должен находиться по пути в PATH. Готовый двоичный пакет можно загрузить с http://www.activestate.com (Заметьте, что требуется версия 5.8.3 или выше, при этом достаточно бесплатного стандартного дистрибутива (Standard Distribution).)
Следующее дополнительное ПО не требуется для базовой сборки, но требуется для сборки полного пакета. Укажите каталоги, в которых находятся соответствующие библиотеки, в файле конфигурации config.pl .
ActiveState TCL
Требуется для компиляции PL/TCL (Заметьте, что требуется версия 8.4 или выше, при этом достаточно бесплатного стандартного дистрибутива (Standard Distribution). Bison и Flex
Для компиляции из Git требуются Bison и Flex , хотя они не нужны для компиляции из дистрибутивного пакета исходного кода. Bison должен быть версии 1.875 или 2.2, либо новее, а Flex — версии 2.5.31 или новее.
И Bison , и Flex входят в комплект утилит msys , который можно загрузить с http://www.mingw.org/wiki/MSYS в качестве компонента набора MinGW .
Вам потребуется добавить каталог, содержащий flex.exe и bison.exe , в путь, задаваемый переменной PATH, в buildenv.pl , если она его ещё не включает. В случае с MinGW, это будет подкаталог \msys\1.0\bin в каталоге вашей инсталляции MinGW.
Примечание
Bison, поставляемый в составе GnuWin32, может работать некорректно, когда он установлен в каталог с именем, содержащим пробелы, например, C:\Program Files\GnuWin32 (целевой каталог по умолчанию в англоязычной системе). В таком случае, возможно, стоит установить его в C:\GnuWin32 или задать в переменной окружения PATH короткий путь NTFS к GnuWin32 (например, C:\PROGRA~1\GnuWin32 ).
Примечание
Старые программы «winflex», которые раньше размещались на FTP-сайте PostgreSQL и упоминались в старой документации, не будут работать в 64-битной системе, выдавая ошибку: «flex: fatal internal error, exec failed» (flex: фатальная внутренняя ошибка, сбой в exec). Используйте flex из набора msys.
Diff требуется для запуска регрессионных тестов, его можно загрузить с http://gnuwin32.sourceforge.net. Gettext
Gettext требуется для сборки с поддержкой NLS, его можно загрузить с http://gnuwin32.sourceforge.net. Заметьте, что для сборки потребуются и исполняемые файлы, и зависимости, и файлы для разработки. MIT Kerberos
Требуется для поддержки проверки подлинности GSSAPI. MIT Kerberos можно загрузить с https://web.mit.edu/Kerberos/dist/index.html. libxml2 и libxslt
Требуется для поддержки XML. Двоичный пакет можно загрузить с https://zlatkovic.com/pub/libxml, а исходный код с http://xmlsoft.org. Учтите, что для libxml2 требуется iconv, который можно загрузить там же. openssl
Требуется для поддержки SSL. Двоичные пакеты можно загрузить с http://www.slproweb.com/products/Win32OpenSSL.html, а исходный код с http://www.openssl.org. ossp-uuid
Требуется для поддержки UUID-OSSP (только для contrib). Исходный код можно загрузить с http://www.ossp.org/pkg/lib/uuid/. Python
Требуется для сборки PL/Python . Двоичные пакеты можно загрузить с http://www.python.org. zlib
Требуется для поддержки сжатия в pg_dump и pg_restore . Двоичные пакеты можно загрузить с https://www.zlib.net.
16.1.2. Специальные замечания для 64-битной Windows
PostgreSQL для архитектуры x64 можно собрать только в 64-битной Windows, процессоры Itanium не поддерживаются.
Совместная сборка 32- и 64-битных версий в одном дереве не поддерживается. Система сборки автоматически определит, в каком окружении (32- или 64-битном) она запущена, и соберёт соответствующий вариант PostgreSQL. Поэтому перед сборкой важно запустить требуемую версию командного интерпретатора.
Для использования на стороне сервера сторонних библиотек, таких как python или openssl , эти библиотеки также должны быть 64-битными. 64-битный сервер не поддерживает загрузку 32-битных библиотек. Некоторые библиотеки сторонних разработчиков, предназначенные для PostgreSQL, могут быть доступны только в 32-битных версиях и в таком случае их нельзя будет использовать с 64-битной версией PostgreSQL.
16.1.3. Сборка
Чтобы собрать весь PostgreSQL в конфигурации выпуска (по умолчанию), запустите команду:
buildЧтобы собрать весь PostgreSQL в конфигурации отладки, запустите команду:
build DEBUGДля сборки отдельного проекта, например psql, выполните, соответственно:
build psqlbuild DEBUG psqlЧтобы сменить конфигурацию по умолчанию на отладочную, поместите в файл buildenv.pl следующую строку:
$ENV="Debug";
Также возможна сборка из графической среды Visual Studio. В этом случае вам нужно запустить в командной строке:
perl mkvcbuild.plи затем открыть в Visual Studio полученный pgsql.sln в корневом каталоге дерева исходных кодов.
16.1.4. Очистка и установка
В большинстве случаев за изменением файлов будет следить автоматическая система отслеживания зависимостей в Visual Studio. Но если изменений было слишком много, может понадобиться очистка установки. Чтобы её выполнить, просто запустите команду clean.bat , которая автоматически очистит все сгенерированные файлы. Вы также можете запустить эту команду с параметром dist , в этом случае она отработает подобно make distclean и удалит также выходные файлы flex/bison.
По умолчанию все файлы сохраняются в подкаталогах debug или release . Чтобы установить эти файлы стандартным образом, а также сгенерировать файлы, требуемые для инициализации и использования базы данных, запустите команду:
install c:\destination\directoryЕсли вы хотите установить только клиентские приложения и интерфейсные библиотеки, выполните команду:
install c:\destination\directory client16.1.5. Запуск регрессионных тестов
Чтобы запустить регрессионные тесты, важно сначала собрать все необходимые для них компоненты. Также убедитесь, что в системном пути могут быть найдены все DLL, требуемые для загрузки всех подсистем СУБД (например, DLL Perl и Python для процедурных языков). Если их каталоги в пути поиска отсутствуют, задайте их в файле buildenv.pl . Чтобы запустить тесты, выполните одну из следующих команд в каталоге src\tools\msvc :
vcregress checkvcregress installcheckvcregress plcheckvcregress contribcheckvcregress modulescheckvcregress ecpgcheckvcregress isolationcheckvcregress bincheckvcregress upgradecheckЧтобы выбрать другой планировщик выполнения тестов (по умолчанию выбран параллельный), укажите его в командной строке, например:
vcregress check serialЗа дополнительными сведениями о регрессионных тестах обратитесь к Главе 30.
Для запуска регрессионных тестов клиентских программ с помощью команды «vcregress bincheck» должен быть установлен дополнительный модуль Perl:
На момент написания документации модуль IPC::Run не включается ни в инсталляцию Perl ActiveState, ни в библиотеку ActiveState PPM (Perl Package Manager, Менеджер пакетов Perl). Чтобы установить его, загрузите архив исходного кода IPC-Run-.tar.gz из CPAN, по адресу https://metacpan.org/release/IPC-Run/, и распакуйте его. Откройте файл buildenv.pl и добавьте в него переменную PERL5LIB, указывающую на подкаталог lib из извлечённого архива. Например:
$ENV=$ENV . ';c:\IPC-Run-0.94\lib';
16.1.6. Сборка документации
Для сборки документации PostgreSQL в формате HTML требуются дополнительные инструменты и файлы. Создайте общий каталог для всех этих файлов и сохраните их в названные подкаталоги.
OpenJade 1.3.1-2
Загрузите архив с http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip и распакуйте его в подкаталог docbook . DocBook DSSSL 1.79
Загрузите архив с http://www.oasis-open.org/cover/ISOEnts.zip и распакуйте его в подкаталог docbook .
Добавьте в buildenv.pl переменную, задающую местоположение ранее созданного общего каталога, например:
$ENV='c:\docbook';
Чтобы собрать документацию, запустите builddoc.bat . Обратите внимание, что при этом сборка фактически будет запущена дважды; это нужно для построения индексов. Сгенерированные HTML-файлы окажутся в каталоге doc\src\sgml .
Пред. Наверх След. Глава 16. Установка из исходного кода в Windows Начало 16.2. Сборка libpq с помощью Visual C++ или Borland C++ Кто разобрался что требует компилятор visual studio 2019? Предупреждение C4668
в справочнике написано: Предупреждение компилятора (уровень 4) C4668 «символ» не определен в качестве макроса препроцессора и будет заменен в «директивах» на «0» Символ, который не был определен, использовался с директивой препроцессора. Символ будет иметь значение false. Чтобы определить символ, можно использовать либо директиву #define , либо параметр компилятора /d . Это предупреждение отключено по умолчанию. Подробнее: Выключенные по умолчанию предупреждения компилятора . Вопрос не в том как это игнорировать а как это исправить
#include int main()
Предупреждение C4668 «STDC_WANT_SECURE_LIB» не задано как макроопределение препроцессора, замена на «0» для «#if/#elif» Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка C2220 следующее предупреждение рассматривается как ошибка Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\limits.h 70
Предупреждение C4668 «STDC_WANT_SECURE_LIB» не задано как макроопределение препроцессора, замена на «0» для «#if/#elif» Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\limits.h 70
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory 162 Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory 172 Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\atomic 292 Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\atomic 308 Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\atomic 325 Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\atomic 388
