Система сборки Nebula3
Автор: redbox
Сборка проектов движка.
Судя по тексту 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]
18 августа 2009 (Обновление: 10 дек 2009)
Комментарии [7]