CMake
Предупреждение: Эта страница устарела и находится здесь лишь как архивный документ. Для получения инструкций по сборке 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++:
- Откройте командную строку Windows DDK/WDK/Visual Studio.
- Существует два метода компиляции с использованием 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. Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей.