CMake — различия между версиями
(→Подготовка среды сборки) |
|||
(не показано 13 промежуточных версии этого же участника) | |||
Строка 13: | Строка 13: | ||
==Поддержка предварительно откомпилированных заголовков (PCH)== | ==Поддержка предварительно откомпилированных заголовков (PCH)== | ||
− | Для уменьшения времени компиляции была внедрена поддержка предварительно откомпилированных заголовков. Активировать эту функцию можно в скрипте конфигурации CMake для ReactOS (configure.cmd/configure.sh) изменив -DPCH=0 на -DPCH=1. | + | Для уменьшения времени компиляции была внедрена поддержка [http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%B2%D0%B0%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D0%BE%D1%82%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8 предварительно откомпилированных заголовков]. Активировать эту функцию можно в скрипте конфигурации CMake для ReactOS (configure.cmd/configure.sh) изменив -DPCH=0 на -DPCH=1. |
==Подготовка выходной папки== | ==Подготовка выходной папки== | ||
Строка 23: | Строка 23: | ||
Выполните: | Выполните: | ||
− | configure.sh | + | configure.sh |
===Windows=== | ===Windows=== | ||
Строка 33: | Строка 33: | ||
Выполните: | Выполните: | ||
− | configure.cmd | + | configure.cmd |
− | После завершения выполнения команды будет создана папка output-MinGW-i386 в корне дерева исходного кода ReactOS, и вы перейдёте в неё. | + | После завершения выполнения команды будет создана папка '''output-MinGW-i386''' в корне дерева исходного кода ReactOS, и вы перейдёте в неё. |
===Visual Studio и Microsoft Visual C++=== | ===Visual Studio и Microsoft Visual C++=== | ||
Строка 40: | Строка 40: | ||
Для подготовки папки для использования Visual Studio или Microsoft Visual C++: | Для подготовки папки для использования Visual Studio или Microsoft Visual C++: | ||
− | Откройте командную строку Windows DDK/WDK/Visual Studio. | + | #Откройте командную строку Windows DDK/WDK/Visual Studio. |
− | Существует два метода компиляции с использованием Microsoft Visual C++. | + | #Существует два метода компиляции с использованием Microsoft Visual C++. |
− | Если вы отдаёте предпочтение старому методу сборки, то конфигурируйте как обычно: | + | *Если вы отдаёте предпочтение старому методу сборки, то конфигурируйте как обычно: |
− | configure.cmd | + | configure.cmd |
− | В противном случае, для генерации файлов solution для Visual Studio, воспользуйтесь следующей командой: | + | *В противном случае, для генерации файлов solution для Visual Studio, воспользуйтесь следующей командой: |
− | configure.cmd VSSolution | + | configure.cmd VSSolution |
− | Примечание: компиляция в Visual Studio или с использованием msbuild пока невозможна. VSSolution можно использовать лишь для удобства просмотра и редактирования исходного кода. | + | '''Примечание: компиляция в Visual Studio или с использованием msbuild пока невозможна.''' VSSolution можно использовать лишь для удобства просмотра и редактирования исходного кода. |
− | После завершения работы команды, в корне дерева исходного кода ReactOS будет создана папка output-VS9-i386 или output-VS10-i386, и вы перейдёте в неё. | + | |
+ | После завершения работы команды, в корне дерева исходного кода ReactOS будет создана папка '''output-VS9-i386''' или '''output-VS10-i386''', и вы перейдёте в неё. | ||
==Сборка инструментария== | ==Сборка инструментария== | ||
Строка 53: | Строка 54: | ||
Для сборки ветви необходимо сначала собрать инструменты для сборки. Это необходимо сделать всего один раз при первой сборке а также в том случае, если в инструментарий сборки будут внесены какие-либо изменения. | Для сборки ветви необходимо сначала собрать инструменты для сборки. Это необходимо сделать всего один раз при первой сборке а также в том случае, если в инструментарий сборки будут внесены какие-либо изменения. | ||
− | Из выходной папки, перейдите в host-tools. Следуйте указаниям, специфичным для вашего компилятора. | + | Из выходной папки, перейдите в '''host-tools'''. Следуйте указаниям, специфичным для вашего компилятора. |
cd host-tools | cd host-tools | ||
===MinGW=== | ===MinGW=== | ||
− | make | + | make |
===Visual Studio или Microsoft Visual C++=== | ===Visual Studio или Microsoft Visual C++=== | ||
− | nmake | + | nmake |
Если вам необходимо сгенерировать ещё и файлы solution для Visual Studio, создайте другую папку, поскольку по умолчанию configure.cmd использует папку с таким же названием, что приведёт к перемешиванию файлов. Например, для использования для сборки nmake папки output-VS9nmake-i386, вам необходимо будет сделать следующее: | Если вам необходимо сгенерировать ещё и файлы solution для Visual Studio, создайте другую папку, поскольку по умолчанию configure.cmd использует папку с таким же названием, что приведёт к перемешиванию файлов. Например, для использования для сборки nmake папки output-VS9nmake-i386, вам необходимо будет сделать следующее: | ||
Строка 68: | Строка 69: | ||
..\configure.cmd | ..\configure.cmd | ||
А затем собрать инструментарий сборки обычным образом: | А затем собрать инструментарий сборки обычным образом: | ||
− | |||
cd host-tools | cd host-tools | ||
nmake | nmake | ||
cd .. | cd .. | ||
− | После компилирования инструментария сборки можно приступить к компиляции ReactOS. В случае обновления CMakeLists лучше всего удалить содержимое папки build-ros и пересобрать ReactOS. | + | После компилирования инструментария сборки можно приступить к компиляции ReactOS. В случае обновления '''CMakeLists''' лучше всего удалить содержимое папки '''build-ros''' и пересобрать ReactOS. |
cd reactos | cd reactos | ||
Строка 84: | Строка 84: | ||
cd ../reactos | cd ../reactos | ||
make | make | ||
+ | |||
==Сборка ReactOS== | ==Сборка ReactOS== | ||
===Сборка модулей=== | ===Сборка модулей=== | ||
− | Для сборки конкретного модуля (напр. "win32k" ) необходимо сделать следующее: Сборка модулей | + | Для сборки конкретного модуля (напр. "win32k" ) необходимо сделать следующее: [[ROS Modules Build|Сборка модулей]] |
===Сборка ReactOS с nmake/msbuild=== | ===Сборка ReactOS с nmake/msbuild=== | ||
Строка 94: | Строка 95: | ||
Если вы хотите собрать ReactOS с использованием nmake, вы можете получить следующую ошибку во время сборки | Если вы хотите собрать ReactOS с использованием nmake, вы можете получить следующую ошибку во время сборки | ||
− | 'mc' is not recognized as an internal or external command,operable program or batch file. | + | '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. | + | Похоже, что вы используете Microsoft Visual C++ Express Edition. Перейдите [http://groups.google.com/group/sage-windows/browse_thread/thread/6f27a9f61266f9a4 сюда] для получения информации и исправления этой проблемы. Кроме того, можно использовать "windmc" из пакета MinGW binutils в качестве альтернативной реализации MC.exe. |
====Намного более быстрая сборка модулей (особенность CMake)==== | ====Намного более быстрая сборка модулей (особенность CMake)==== | ||
− | + | '''Предупреждение:''' Синтаксис, приведённый ниже, может быть использован только с CMake. | |
+ | |||
В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр. | В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр. | ||
− | + | '''Предупреждение:''' Вам необходимо перед этим иметь хотя бы раз скомпилированный командой "make '''ваш_модуль'''" модуль перед использование быстрого синтаксиса. | |
Один простой пример: Вы изменили код модуля "win32k" (ваш модуль), и не меняли никаких модулей, от которых зависит ваш модуль (напр., заголовки PSDK), вы также ранее компилировали модуль "Win32k-без-изменений", тогда вы можете воспользоваться быстрым синтаксисом и скомпилировать новый модуль "win32k" всего за несколько секунд. | Один простой пример: Вы изменили код модуля "win32k" (ваш модуль), и не меняли никаких модулей, от которых зависит ваш модуль (напр., заголовки PSDK), вы также ранее компилировали модуль "Win32k-без-изменений", тогда вы можете воспользоваться быстрым синтаксисом и скомпилировать новый модуль "win32k" всего за несколько секунд. | ||
− | Внимание: Быстрый синтаксис будет искать изменения лишь в вашем модуле, в других модулях поиск изменений производиться не будет. | + | '''Внимание: Быстрый синтаксис будет искать изменения лишь в вашем модуле, в других модулях поиск изменений производиться не будет.''' |
+ | |||
Быстрый синтаксис для сборки любого модуля: | Быстрый синтаксис для сборки любого модуля: | ||
− | make нужный_модуль/fast | + | make '''нужный_модуль'''/fast |
Если вы хотите скомпилировать Win32k, то вводите: | Если вы хотите скомпилировать Win32k, то вводите: | ||
− | make win32k/fast | + | make win32k/fast |
===Сборка загрузочного CD=== | ===Сборка загрузочного CD=== | ||
− | Для сборки загрузочного CD вам необходимо сделать следующее: Сборка ReactOS | + | Для сборки загрузочного CD вам необходимо сделать следующее: [[ROS Build|Сборка ReactOS]] |
====Более быстрая сборка загрузочного CD==== | ====Более быстрая сборка загрузочного CD==== | ||
− | Обратите внимание: Этот метод возможен лишь с CMake. | + | '''Обратите внимание: Этот метод возможен лишь с CMake.''' |
+ | |||
Благодаря использованию быстрого синтасиса можно собрать загрузочный диск намного быстрее. Перед сборкой с использование быстрого синтаксиса необходимо убедиться, что все зависимые модули ранее уже были скомпилированы. "/Fast" пропускает проверку зависимостей перед началом компиляции. | Благодаря использованию быстрого синтасиса можно собрать загрузочный диск намного быстрее. Перед сборкой с использование быстрого синтаксиса необходимо убедиться, что все зависимые модули ранее уже были скомпилированы. "/Fast" пропускает проверку зависимостей перед началом компиляции. | ||
− | Помните: Вам необходимо хотя бы раз собрать нужный вам модуль командой "make нужный_модуль " перед использованием быстрого синтаксиса для сборки загрузочного диска. | + | '''Помните: Вам необходимо хотя бы раз собрать нужный вам модуль командой "make нужный_модуль " перед использованием быстрого синтаксиса для сборки загрузочного диска.''' |
+ | |||
Пример: "Вы произвели какие-либо изменения в модуле win32k и теперь хотите собрать загрузочный диск с модифицированным вами win32k. Также, вы ранее скомпилировали "win32k-before-changes" " | Пример: "Вы произвели какие-либо изменения в модуле win32k и теперь хотите собрать загрузочный диск с модифицированным вами win32k. Также, вы ранее скомпилировали "win32k-before-changes" " | ||
− | make win32k/fast | + | make win32k/fast |
− | + | так как ваши изменения затрагивают только win32k. | |
А затем: | А затем: | ||
− | make bootcd/fast | + | make bootcd/fast |
Внимательно прочитайте следующее: | Внимательно прочитайте следующее: | ||
+ | <pre> | ||
Перед использованием быстрого синтаксиса хотя бы раз обязательно нужно скомпилировать систему командой "make bootcd". | Перед использованием быстрого синтаксиса хотя бы раз обязательно нужно скомпилировать систему командой "make bootcd". | ||
Обязательно нужно компилировать изменения модуля перед командой bootcd/fast, иначе ваши изменения добавлены не будут. | Обязательно нужно компилировать изменения модуля перед командой bootcd/fast, иначе ваши изменения добавлены не будут. | ||
Строка 138: | Строка 144: | ||
Если ваши изменения затрагивают несколько НЕЗАВИСИМЫХ модулей, скомпилируйте их все, а затем выполните компиляцию командой bootcd/fast. | Если ваши изменения затрагивают несколько НЕЗАВИСИМЫХ модулей, скомпилируйте их все, а затем выполните компиляцию командой bootcd/fast. | ||
Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей. | Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей. | ||
− | + | </pre> | |
− | Сборка ReactOS | + | ==Смотрите также== |
− | Сборка модулей | + | *[[ROS Build|Сборка ReactOS]] |
− | CMake Todo | + | *[[ROS Modules Build|Сборка модулей]] |
− | RBuild | + | *[[CMake Todo]] |
+ | *[[RBuild]] | ||
{{ReactOS}} | {{ReactOS}} | ||
+ | [[Категория:Переводы официальной вики]] |
Текущая версия на 18:27, 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)
Предупреждение: Синтаксис, приведённый ниже, может быть использован только с 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. Этот метод крайне непрактичен, если ваши изменения затрагивают много модулей.