Найти в Дзене
Введение в CMake для начинающих
CMake - это набор кроссплатформенных инструментов с открытым исходным кодом, используемых для сборки и распространения программного обеспечения. В последние годы он стал стандартом де-факто для разработки приложений на C и C++, поэтому пришло время для легкой вводной статьи на эту тему. В следующих параграфах мы разберемся, что представляет собой CMake, какова его философия и как с его помощью создать демо-приложение с нуля. CMake известен как система мета-сборки. На самом деле она не собирает ваш исходный код: вместо этого она генерирует файлы проекта для целевой платформы...
1 неделю назад
CMake - Практическое руководство. Глава 5. Основы тестирования и развертывания (Крэйг Скотт, перевод на русский язык)
CMake предоставляет множество функций для тестирования проекта, его установки и создания установочных пакетов. Возможности, связанные с каждым из этих действий, могут быть непомерно сложными, во многом потому, что сложны сами действия. Огромное количество различных действий, выполняемых различными платформами, инструментами тестирования и системами упаковки, часто недооценивается. CMake призван упростить эту сложность, представив более последовательный интерфейс и набор элементов управления, но при этом предоставляя доступ к низкоуровневым функциям, где это необходимо...
4 месяца назад
CMake - Практическое руководство. Глава 15. Типы сборки (Крэйг Скотт, перевод на русский язык)
В этой и следующей главах рассматриваются две тесно связанные темы. Тип сборки (также известный как конфигурация сборки или схема сборки в некоторых IDE) - это элемент управления высокого уровня, который выбирает различные варианты поведения компилятора и компоновщика. Манипулирование типом сборки является темой этой главы, в то время как в следующей главе представлены более конкретные детали управления опциями компилятора и компоновщика. Вместе эти главы охватывают материал, который каждый разработчик CMake обычно использует для своих проектов, кроме самых тривиальных...
4 месяца назад
CMake - Практическое руководство. Глава 14. Отладка и диагностика (Крэйг Скотт, перевод на русский язык)
Когда сборка идет нормально, пользователи, как правило, не обращают особого внимания на вывод, генерируемый CMake. Однако для разработчиков, работающих над проектом, диагностический вывод и возможности отладки очень важны. CMake всегда предоставлял базовую функциональность для вывода сообщений, но улучшения, добавленные в версиях 3.15-3.18, значительно расширили доступные возможности. CMake всегда поддерживал вывод текстовых сообщений с помощью команды message(), которая была кратко представлена в разделе 6...
4 месяца назад
CMake - Практическое руководство. Глава 13. Политики (Крэйг Скотт, перевод на русский язык)
CMake развивался в течение долгого времени, внедряя новые функциональные возможности, исправляя ошибки и изменяя поведение некоторых функций для устранения недостатков или внесения улучшений. Хотя появление новых возможностей вряд ли вызовет проблемы у существующих проектов, созданных с помощью CMake, любое изменение в поведении может привести к поломке проектов, если они полагаются на старое поведение. По этой причине разработчики CMake тщательно следят за тем, чтобы изменения были реализованы таким...
4 месяца назад
CMake - Практическое руководство. Глава 12. Модули (Крэйг Скотт, перевод на русский язык)
Предыдущие главы были посвящены основным аспектам CMake. Переменные, свойства, условные конструкции, генераторные выражения, функции и т. д. - все это часть того, что можно считать языком CMake. В отличие от этого, модули - это готовые фрагменты кода CMake, построенные поверх основных возможностей языка. Они предоставляют богатый набор функциональных возможностей, которые проекты могут использовать для достижения самых разных целей. Будучи написанными и упакованными как обычный код CMake и, следовательно,...
4 месяца назад
CMake - Практическое руководство. Глава 11. Генераторные выражения (Крэйг Скотт, перевод на русский язык)
При запуске CMake разработчики обычно думают, что это один шаг, который включает чтение файла CMakeLists.txt и создание соответствующего набора проектных файлов, специфичных для генератора (например, файлов решений и проектов Visual Studio, проектов Xcode, файлов Unix Makefiles или входных файлов Ninja). Однако здесь есть два совершенно разных этапа. При запуске CMake конец вывода в консоль обычно выглядит примерно так: Когда вызывается CMake, он сначала считывает и обрабатывает файл CMakeLists.txt,...
5 месяцев назад
CMake - Практическое руководство. Глава 10. Свойства (Крэйг Скотт, перевод на русский язык)
Свойства влияют практически на все аспекты процесса сборки, начиная с того, как исходный файл компилируется в объектный файл, и заканчивая местом установки собранных двоичных файлов в программе установки. Они всегда привязаны к определенному объекту, будь то каталог, цель, исходный файл, тестовый пример, переменная кэша или даже сам процесс сборки в целом. Вместо того чтобы хранить отдельное значение, как это делает переменная, свойство предоставляет информацию, специфичную для сущности, к которой оно привязано...
5 месяцев назад
C++ Указатель на метод класса в вопросах и ответах
Да. Рассмотрим следующую функцию: Тип этой функции зависит от того, является ли она обычной функцией или нестатической функцией-членом некоторого класса: Примечание: если это статическая функция-член класса Fred, то ее тип такой же, как если бы это была обычная функция: «int (*)(char,float)». Никак. Поскольку функция-член бессмысленна без объекта, на котором она вызывается, вы не можете сделать это напрямую (если бы The X Window System была переписана на C++, она, вероятно, передавала бы ссылки...
5 месяцев назад
CMake - Практическое руководство. Глава 9. Функции и макросы (Крэйг Скотт, перевод на русский язык)
Оглядываясь на материал, рассмотренный в этой книге, можно сказать, что синтаксис CMake уже начинает напоминать язык программирования. Он поддерживает переменные, логику «if-then-else», циклы и включение других файлов для обработки. Не стоит удивляться тому, что CMake также поддерживает такие распространенные в программировании понятия, как функции и макросы. Как и в других языках программирования, функции и макросы являются основным механизмом для проектов и разработчиков, позволяющим расширить функциональность CMake и инкапсулировать повторяющиеся задачи естественным образом...
5 месяцев назад
CMake - Практическое руководство. Глава 8 . Использование подкаталогов (Крэйг Скотт, перевод на русский язык)
Хранить все в одной директории - это хорошо для простых проектов, но в большинстве реальных проектов файлы распределены по нескольким директориям. Обычно различные типы файлов или отдельные модули группируются в собственных каталогах, а файлы, относящиеся к логическим функциональным группам, находятся в своей собственной части иерархии каталогов проекта. Хотя структура каталогов может определяться тем, как разработчики представляют себе проект, способ структурирования проекта также влияет на систему сборки...
6 месяцев назад
C++20 std::span в примерах
std::span – это объект, который ссылается на непрерывную последовательность объектов (относительно расположения в памяти). Иногда std::span называют видом, и при этом он никогда не является владельцем данных. Непрерывная последовательность объектов может быть массивом языка С, указателем с размером, std::array, std::vector или std::string. У std::span может быть статическая (static extent) или динамическая длина (изменяемая, dynamic extent). По умолчанию у std::span динамическая длина. Определение...
6 месяцев назад