Nebula CommunityСтатьи

Система сборки Nebula3

Автор:

Сборка проектов движка.

Судя по тексту tcl скриптов это переделанная система билда еще первой небулы и ничего военного в ней нет.

  Итак, вам понадобится Nebula3 SDK, DirectXSDK, ActiveStateTcl, Doxygen, Html Help Workshop, MsBuild, NSIS.

  После установки убеждаемся что пути "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\Tcl\bin;C:\Program Files\doxygen\bin;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\Program Files\HTML Help Workshop;C:\Program Files\NSIS" прописаны в "Свойства системы - Дополнительно - Переменные среды" в переменной Path.

  По умолчанию C:\Tcl\bin прописывается в Path при установке, но есть один момент. В папке с установленной Nebula3 SDK в файле compile.msbuild в строке 38 где написано "tclsh update.tcl" нужно написать "tclsh85 update.tcl" (85 - это моя версия интерпретатора tclsh, у вас может быть другая, ищите его в C:\Tcl\bin).

  Далее создаем в корне Nebula3 SDK папочку build, или вроде того, и добавляем в нее батники следующего содержания:

  debug.bat
cd ..
msbuild compile.msbuild
pause

  release.bat
cd ..
msbuild compile.msbuild /p:Config=Release
pause

  make_docs.bat
cd ..
msbuild makedocs.msbuild
pause
 
  make_sdk.bat
cd ..
msbuild makesdk.msbuild
pause

  update.bat
cd ..\code
tclsh85 update.tcl
pause

Типа так... Сборка займет около 20и минут в зависимости от оборудования.

  Как создать свой проект и решение к нему? За эту функцию отвечают *.epk файлы, они содержат информацию о проекте, его зависимостях и пр. Находятся они в папке \code. Я не буду детально их разбирать, думаю что любой программист быстро поймет насколько все просто :)


Модификация системы сборки

По умолчанию система сборки поддерживает только *.cc, *.c, *.h файлы, чтобы ее расширить до *.cpp делаем такое:


Index: D:/nebula3/bin/makemake.tcl
--- D:/nebula3/bin/makemake.tcl  (revision 1)
+++ D:/nebula3/bin/makemake.tcl  (working copy)
@@ -456,6 +456,10 @@
        for {set j 0} {$j < [llength $full_sources]} {incr j} {
            lappend sources [file=]]
        }
+      set full_sources [glob -nocomplain -directory ./$tar($num_tars,basedir)/$cluster *.cpp]
+        for {set j 0} {$j < [llength $full_sources]} {incr j} {
+            lappend sources [file=]]
+        }

        # Make module from cluster
        beginmodule $cluster
@@ -500,6 +504,12 @@
        for {set j 0} {$j < [llength $full_sources]} {incr j} {
            lappend sources [file=]]
        }
+   
+        # get list of source files
+      set full_sources [glob -nocomplain -directory ./$tar($num_tars,basedir)/$cluster *.cpp]
+        for {set j 0} {$j < [llength $full_sources]} {incr j} {
+            lappend sources [file=]]
+        }

        # get list of nidl files and add their target files to sources and headers
        set full_nidls [glob -nocomplain -directory ./$tar($num_tars,basedir)/$cluster *.nidl]

#build, #nebula3

18 августа 2009 (Обновление: 10 дек 2009)

Комментарии [7]