CMake

Материал из Русский WINE
Перейти к: навигация, поиск

Предупреждение: Эта страница устарела и находится здесь лишь как архивный документ. Для получения инструкций по сборке ReactOS, обратитесь к странице на официальном сайте проекта, посвящённой среде сборки.

CMake это кроссплатформенная система сборки.

В ревизии r56105 в cmake добавлена поддержка RC-файлов, однако баг из самого cmake по-прежнему никуда не исчез. Этот баг находится здесь.

Подготовка среды сборки

Прежде всего, загрузите и установите среду сборки ReactOS отсюда.

Начиная с ревизии r51836, транк можно собрать используя cmake.

Поддержка предварительно откомпилированных заголовков (PCH)

Для уменьшения времени компиляции была внедрена поддержка предварительно откомпилированных заголовков. Активировать эту функцию можно в скрипте конфигурации CMake для ReactOS (configure.cmd/configure.sh) изменив -DPCH=0 на -DPCH=1.

Подготовка выходной папки

Перед сборкой инструментария ReactOS или самого ReactOS необходимо создать и подготовить выходную папку. Это простое действие, и для него потребуется всего одна команда. Эта команда размещена в корне свежих ревизий исходного кода и может быть выполнена либо из самой корневой папки, либо из любой другой папки, в которой вы хотите производить сборку исходного кода.

Linux/Unix

Выполните:

configure.sh

Windows

Поддерживаются как компилятор MinGW, так и компилятор Microsoft Visual C++. Команда очень похожа, но выходная папка будет немного другой.

MinGW

Выполните:

configure.cmd

После завершения выполнения команды будет создана папка output-MinGW-i386 в корне дерева исходного кода ReactOS, и вы перейдёте в неё.

Visual Studio и Microsoft Visual C++

Для подготовки папки для использования Visual Studio или Microsoft Visual C++:

  1. Откройте командную строку Windows DDK/WDK/Visual Studio.
  2. Существует два метода компиляции с использованием Microsoft Visual C++.
  • Если вы отдаёте предпочтение старому методу сборки, то конфигурируйте как обычно:
configure.cmd
  • В противном случае, для генерации файлов solution для Visual Studio, воспользуйтесь следующей командой:
configure.cmd VSSolution

Примечание: компиляция в Visual Studio или с использованием msbuild пока невозможна. VSSolution можно использовать лишь для удобства просмотра и редактирования исходного кода.

После завершения работы команды, в корне дерева исходного кода ReactOS будет создана папка output-VS9-i386 или output-VS10-i386, и вы перейдёте в неё.

Сборка инструментария

Для сборки ветви необходимо сначала собрать инструменты для сборки. Это необходимо сделать всего один раз при первой сборке а также в том случае, если в инструментарий сборки будут внесены какие-либо изменения.

Из выходной папки, перейдите в host-tools. Следуйте указаниям, специфичным для вашего компилятора.

cd host-tools

MinGW

make

Visual Studio или Microsoft Visual C++

nmake

Если вам необходимо сгенерировать ещё и файлы solution для Visual Studio, создайте другую папку, поскольку по умолчанию configure.cmd использует папку с таким же названием, что приведёт к перемешиванию файлов. Например, для использования для сборки nmake папки output-VS9nmake-i386, вам необходимо будет сделать следующее:

mkdir output-VS9nmake-i386
cd output-VS9nmake-i386
..\configure.cmd

А затем собрать инструментарий сборки обычным образом:

cd host-tools
nmake
cd ..

После компилирования инструментария сборки можно приступить к компиляции ReactOS. В случае обновления CMakeLists лучше всего удалить содержимое папки build-ros и пересобрать ReactOS.

cd reactos
make

Соединим предыдущие шаги воедино:

configure.cmd
cd host-tools
make
cd ../reactos
make

Сборка ReactOS

Сборка модулей

Для сборки конкретного модуля (напр. "win32k" ) необходимо сделать следующее: Сборка модулей

Сборка ReactOS с nmake/msbuild

Если вы хотите собрать ReactOS с использованием nmake, вы можете получить следующую ошибку во время сборки

'mc' is not recognized as an internal or external command,operable program or batch file.

Похоже, что вы используете Microsoft Visual C++ Express Edition. Перейдите сюда для получения информации и исправления этой проблемы. Кроме того, можно использовать "windmc" из пакета MinGW binutils в качестве альтернативной реализации MC.exe.

Намного более быстрая сборка модулей (особенность CMake)

Предупреждение: Синтаксис, приведённый ниже, может быть использован только с CMake.

В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр.

Предупреждение: Вам необходимо перед этим иметь хотя бы раз скомпилированный командой "make ваш_модуль" модуль перед использование быстрого синтаксиса. Один простой пример: Вы изменили код модуля "win32k" (ваш модуль), и не меняли никаких модулей, от которых зависит ваш модуль (напр., заголовки PSDK), вы также ранее компилировали модуль "Win32k-без-изменений", тогда вы можете воспользоваться быстрым синтаксисом и скомпилировать новый модуль "win32k" всего за несколько секунд.

Внимание: Быстрый синтаксис будет искать изменения лишь в вашем модуле, в других модулях поиск изменений производиться не будет.

Быстрый синтаксис для сборки любого модуля:

 make нужный_модуль/fast

Если вы хотите скомпилировать Win32k, то вводите:

 make win32k/fast

Сборка загрузочного CD

Для сборки загрузочного CD вам необходимо сделать следующее: Сборка ReactOS

Более быстрая сборка загрузочного CD

Обратите внимание: Этот метод возможен лишь с CMake.

Благодаря использованию быстрого синтасиса можно собрать загрузочный диск намного быстрее. Перед сборкой с использование быстрого синтаксиса необходимо убедиться, что все зависимые модули ранее уже были скомпилированы. "/Fast" пропускает проверку зависимостей перед началом компиляции.

Помните: Вам необходимо хотя бы раз собрать нужный вам модуль командой "make нужный_модуль " перед использованием быстрого синтаксиса для сборки загрузочного диска.

Пример: "Вы произвели какие-либо изменения в модуле win32k и теперь хотите собрать загрузочный диск с модифицированным вами win32k. Также, вы ранее скомпилировали "win32k-before-changes" "

make win32k/fast

так как ваши изменения затрагивают только win32k.

А затем:

make bootcd/fast

Внимательно прочитайте следующее:

Перед использованием быстрого синтаксиса хотя бы раз обязательно нужно скомпилировать систему командой "make bootcd".
Обязательно нужно компилировать изменения модуля перед командой bootcd/fast, иначе ваши изменения добавлены не будут.
Если ваши изменения связаны с модификацией модулей, от которых зависит win32k, используйте "make win32k" а затем вызывайте "make bootcd/fast".
Если ваши изменения затрагивают несколько НЕЗАВИСИМЫХ модулей, скомпилируйте их все, а затем выполните компиляцию командой bootcd/fast.
Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей.

Смотрите также

ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQ
Обзоры ОболочкаNTVDMWOWCommunity Edition