CMake — различия между версиями

Материал из Русский WINE
Перейти к: навигация, поиск
 
(не показано 14 промежуточных версии этого же участника)
Строка 7: Строка 7:
 
==Подготовка среды сборки==
 
==Подготовка среды сборки==
  
Прежде всего, загрузите и установите среду сборки ReactOS отсюда
+
Прежде всего, загрузите и установите среду сборки ReactOS [http://reactos.org/wiki/Build_Environment отсюда].
  
Начиная с ревизии r51836, транк можно собрать используя cmake..
+
Начиная с ревизии [http://www.code.reactos.org/changelog/reactos?cs=51836 r51836], транк можно собрать используя cmake.
  
 
==Поддержка предварительно откомпилированных заголовков (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)====
  
Imbox notice.png Предупреждение: Синтаксис, приведённый ниже, может быть использован только с CMake.
+
'''Предупреждение:''' Синтаксис, приведённый ниже, может быть использован только с CMake.
 +
 
 
В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр.
 
В CMake имеется функция, использование которой может значительно ускорить процесс сборки модулей при использование быстрого синтаксиса. Вы можете воспользоваться быстрым синтаксисом, если ваши изменения затрагивают лишь один модуль и не связаны с изменением модулей, используемых изменяемым вами модулем. Быстрый синтаксис /fast пропускает проверку зависимостей перед началом компиляции, так что он очень и очень быстр.
  
Imbox notice.png Предупреждение: Вам необходимо перед этим иметь хотя бы раз скомпилированный командой "make ваш_модуль " модуль перед использование быстрого синтаксиса.
+
'''Предупреждение:''' Вам необходимо перед этим иметь хотя бы раз скомпилированный командой "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.
+
так как ваши изменения затрагивают только 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++:

  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План работRoadmap ядра by VgalРазработчикиСовместимость с 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-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP