CMake — различия между версиями
(Новая страница: «CMake Предупреждение: Эта страница устарела и находится здесь лишь как архивный документ.…») |
|||
Строка 1: | Строка 1: | ||
− | + | '''Предупреждение:''' Эта страница устарела и находится здесь лишь как архивный документ. Для получения инструкций по сборке ReactOS, обратитесь к странице на официальном сайте проекта, посвящённой среде сборки. | |
− | Предупреждение: Эта страница устарела и находится здесь лишь как архивный документ. Для получения инструкций по сборке ReactOS, обратитесь к странице на официальном сайте проекта, посвящённой среде сборки. | + | |
− | CMake это кроссплатформенная система сборки. | + | [http://www.cmake.org/ CMake] это кроссплатформенная система сборки. |
− | В ревизии r56105 в cmake добавлена поддержка RC-файлов, однако баг из самого cmake по-прежнему никуда не исчез. Этот баг находится здесь. | + | В ревизии [http://code.reactos.org/changelog/reactos?cs=56105 r56105] в cmake добавлена поддержка RC-файлов, однако баг из самого cmake по-прежнему никуда не исчез. Этот баг находится [http://www.cmake.org/Bug/view.php?id=12998 здесь]. |
− | + | ==Подготовка среды сборки== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Подготовка среды сборки | + | |
Прежде всего, загрузите и установите среду сборки ReactOS отсюда | Прежде всего, загрузите и установите среду сборки ReactOS отсюда | ||
Строка 31: | Строка 11: | ||
Начиная с ревизии r51836, транк можно собрать используя cmake.. | Начиная с ревизии r51836, транк можно собрать используя cmake.. | ||
− | Поддержка предварительно откомпилированных заголовков (PCH) | + | ==Поддержка предварительно откомпилированных заголовков (PCH)== |
Для уменьшения времени компиляции была внедрена поддержка предварительно откомпилированных заголовков. Активировать эту функцию можно в скрипте конфигурации CMake для ReactOS (configure.cmd/configure.sh) изменив -DPCH=0 на -DPCH=1. | Для уменьшения времени компиляции была внедрена поддержка предварительно откомпилированных заголовков. Активировать эту функцию можно в скрипте конфигурации CMake для ReactOS (configure.cmd/configure.sh) изменив -DPCH=0 на -DPCH=1. | ||
− | Подготовка выходной папки | + | ==Подготовка выходной папки== |
Перед сборкой инструментария ReactOS или самого ReactOS необходимо создать и подготовить выходную папку. Это простое действие, и для него потребуется всего одна команда. Эта команда размещена в корне свежих ревизий исходного кода и может быть выполнена либо из самой корневой папки, либо из любой другой папки, в которой вы хотите производить сборку исходного кода. | Перед сборкой инструментария ReactOS или самого ReactOS необходимо создать и подготовить выходную папку. Это простое действие, и для него потребуется всего одна команда. Эта команда размещена в корне свежих ревизий исходного кода и может быть выполнена либо из самой корневой папки, либо из любой другой папки, в которой вы хотите производить сборку исходного кода. | ||
− | Linux/Unix | + | ===Linux/Unix=== |
Выполните: | Выполните: | ||
configure.sh | configure.sh | ||
− | Windows | + | |
+ | ===Windows=== | ||
Поддерживаются как компилятор MinGW, так и компилятор Microsoft Visual C++. Команда очень похожа, но выходная папка будет немного другой. | Поддерживаются как компилятор MinGW, так и компилятор Microsoft Visual C++. Команда очень похожа, но выходная папка будет немного другой. | ||
− | MinGW | + | ====MinGW==== |
Выполните: | Выполните: | ||
Строка 55: | Строка 36: | ||
После завершения выполнения команды будет создана папка output-MinGW-i386 в корне дерева исходного кода ReactOS, и вы перейдёте в неё. | После завершения выполнения команды будет создана папка output-MinGW-i386 в корне дерева исходного кода ReactOS, и вы перейдёте в неё. | ||
− | Visual Studio и Microsoft Visual C++ | + | ===Visual Studio и Microsoft Visual C++=== |
Для подготовки папки для использования Visual Studio или Microsoft Visual C++: | Для подготовки папки для использования Visual Studio или Microsoft Visual C++: | ||
Строка 68: | Строка 49: | ||
После завершения работы команды, в корне дерева исходного кода ReactOS будет создана папка output-VS9-i386 или output-VS10-i386, и вы перейдёте в неё. | После завершения работы команды, в корне дерева исходного кода ReactOS будет создана папка output-VS9-i386 или output-VS10-i386, и вы перейдёте в неё. | ||
− | Сборка инструментария | + | ==Сборка инструментария== |
Для сборки ветви необходимо сначала собрать инструменты для сборки. Это необходимо сделать всего один раз при первой сборке а также в том случае, если в инструментарий сборки будут внесены какие-либо изменения. | Для сборки ветви необходимо сначала собрать инструменты для сборки. Это необходимо сделать всего один раз при первой сборке а также в том случае, если в инструментарий сборки будут внесены какие-либо изменения. | ||
Строка 75: | Строка 56: | ||
cd host-tools | cd host-tools | ||
− | MinGW | + | ===MinGW=== |
make | make | ||
− | Visual Studio или Microsoft Visual C++ | + | ===Visual Studio или Microsoft Visual C++=== |
nmake | nmake | ||
Строка 103: | Строка 84: | ||
cd ../reactos | cd ../reactos | ||
make | make | ||
− | Сборка ReactOS | + | ==Сборка ReactOS== |
− | Сборка модулей | + | ===Сборка модулей=== |
Для сборки конкретного модуля (напр. "win32k" ) необходимо сделать следующее: Сборка модулей | Для сборки конкретного модуля (напр. "win32k" ) необходимо сделать следующее: Сборка модулей | ||
− | Сборка ReactOS с nmake/msbuild | + | ===Сборка ReactOS с nmake/msbuild=== |
Если вы хотите собрать ReactOS с использованием nmake, вы можете получить следующую ошибку во время сборки | Если вы хотите собрать ReactOS с использованием nmake, вы можете получить следующую ошибку во время сборки | ||
Строка 116: | Строка 97: | ||
Похоже, что вы используете Microsoft Visual C++ Express Edition. Перейдите сюда для получения информации и исправления этой проблемы. Кроме того, можно использовать "windmc" из пакета MinGW binutils в качестве альтернативной реализации MC.exe. | Похоже, что вы используете Microsoft Visual C++ Express Edition. Перейдите сюда для получения информации и исправления этой проблемы. Кроме того, можно использовать "windmc" из пакета MinGW binutils в качестве альтернативной реализации MC.exe. | ||
− | Намного более быстрая сборка модулей (особенность CMake) | + | ====Намного более быстрая сборка модулей (особенность CMake)==== |
Imbox notice.png Предупреждение: Синтаксис, приведённый ниже, может быть использован только с CMake. | Imbox notice.png Предупреждение: Синтаксис, приведённый ниже, может быть использован только с CMake. | ||
Строка 131: | Строка 112: | ||
make win32k/fast | make win32k/fast | ||
− | Сборка загрузочного CD | + | |
+ | ===Сборка загрузочного CD=== | ||
Для сборки загрузочного CD вам необходимо сделать следующее: Сборка ReactOS | Для сборки загрузочного CD вам необходимо сделать следующее: Сборка ReactOS | ||
− | Более быстрая сборка загрузочного CD | + | ====Более быстрая сборка загрузочного CD==== |
Обратите внимание: Этот метод возможен лишь с CMake. | Обратите внимание: Этот метод возможен лишь с CMake. | ||
Строка 156: | Строка 138: | ||
Если ваши изменения затрагивают несколько НЕЗАВИСИМЫХ модулей, скомпилируйте их все, а затем выполните компиляцию командой bootcd/fast. | Если ваши изменения затрагивают несколько НЕЗАВИСИМЫХ модулей, скомпилируйте их все, а затем выполните компиляцию командой bootcd/fast. | ||
Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей. | Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей. | ||
− | Смотрите также | + | ==Смотрите также== |
Сборка ReactOS | Сборка ReactOS |
Версия 14:41, 4 апреля 2016
Предупреждение: Эта страница устарела и находится здесь лишь как архивный документ. Для получения инструкций по сборке 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)
Imbox notice.png Предупреждение: Синтаксис, приведённый ниже, может быть использован только с CMake. В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр.
Imbox notice.png Предупреждение: Вам необходимо перед этим иметь хотя бы раз скомпилированный командой "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 Сборка модулей CMake Todo RBuild