Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Как в project group путь.   Найти похожие ветки 

 
Суслик ©   (2005-06-13 16:38) [0]

Добрый день.

Есть группа проектов. В списке перечисления проектов указаны проекты и пути к ним. Примерно так:

TestFramework.bpl: ..\..\common\Code\pkTestFramework\TestFramework.dpk
 $(DCC)

Kern.bpl: ..\..\common\code\pkKern\Kern.dpk
 $(DCC)


Вопрос. Как сделать так, чтобы сожно было указывать пути относительно некой переменной окружения. НАпример так:

TestFramework.bpl: $(common_root)\Code\pkTestFramework\TestFramework.dpk
 $(DCC)

Kern.bpl: $(common_root)\code\pkKern\Kern.dpk
 $(DCC)


Где common_root есть переменная окружения, равная, например "e:\projects\common".


 
Суслик ©   (2005-06-13 16:39) [1]

Вообще, где почитать про формат этого файла. Поиск по сети пока ничего толкового не дал.


 
Alex Konshin ©   (2005-06-14 02:39) [2]

Это формат makefile от Borland. Насколько я помню, в справке все-таки есть какой-то куцый help. У меня на работе нет под рукой Delphi. Думаю, что из примера будет понятней:

#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
# Debug options.
# Control generation of OutputDebugString calls and other debug messages.
DEBUGOPTIONS = -Ddebug_arrays

# Common compiler options.
OPT = -Q

#------------------------------------------------------------------------------

!ifdef DEBUG
Debug = 1
!endif

!ifdef Debug

#DCCOPTIONS = $(OPT) -GD $(DEBUGOPTIONS) -B
CREATEMAP = 0
DCCOPTIONS = $(OPT) $(DEBUGOPTIONS) -B
!ifndef CFG
CFG = Debug
!endif

!else

CREATEMAP = 0
!ifndef CFG
CFG = Release
!endif

!if $(CFG)=="Debug"
#DCCOPTIONS = $(OPT) -GD $(DEBUGOPTIONS) -B
DCCOPTIONS = $(OPT) $(DEBUGOPTIONS) -B
!else
!ifdef REBUILD
DCCOPTIONS = $(OPT) -B
!else
DCCOPTIONS = $(OPT)
!endif
!endif
!endif

OUTPUT = $(CFG)

BIN = $(OUTPUT_ROOT)\$(OUTPUT)\Bin
DCU = $(OUTPUT_ROOT)\$(OUTPUT)\DCU
SRC = $(PROJECT_HOME)

BUILDOPTIONS = $(DCCOPTIONS) -LN"$(DCU)" -N"$(DCU)" -U"$(DCU)" -LE"$(BIN)" -E"$(BIN)" -I"$(SRC)" -R"$(SRC)" -O"$(SRC)"

MAKE = $(MAKEDIR)\make.exe -$(MAKEFLAGS) -f$**
BRCC = $(MAKEDIR)\brcc32.exe $**

DCC = $(DELPHI)\BIN\dcc32.exe $(DCCOPTIONS)
BUILD = $(DELPHI)\BIN\dcc32.exe $(BUILDOPTIONS)
MAKEBPL = $(DCC) $(@B).dpk
MAKEDLL = $(DCC) $(@B).dpr
MAKEEXE = $(DCC) $(@B).dpr

#------------------------------------------------------------------------------

PROJECTS = {$(BIN)\}$(PROJECT).bpl {$(BIN)\}$(PROJECT)Test.exe

#------------------------------------------------------------------------------

default: dirs $(PROJECTS)

dirs::
if not exist $(OUTPUT_ROOT)\$(OUTPUT) mkdir $(OUTPUT_ROOT)\$(OUTPUT)
if not exist $(BIN) mkdir $(BIN)
if not exist $(DCU) mkdir $(DCU)

$(PROJECT).bpl: {$(SRC)\}$(PROJECT).dpk
echo ==== $@ ====
echo $(BUILD) $(SRC)\$(PROJECT).dpk
cd $(SRC)
$(BUILD) $(SRC)\$(PROJECT).dpk
cd $(PROJECT_HOME)

$(PROJECT)Test.exe: {$(SRC)\Test\}Test.dpr
echo ==== $@ ====
echo $(BUILD) -LUvcl;FlarpArrays $(SRC)\Test\Test.dpr
cd $(SRC)\Test
$(BUILD) -LUvcl;FlarpArrays $(SRC)\Test\Test.dpr
cd $(PROJECT_HOME)

All:: dirs $(PROJECTS)


А используется приведенное выше безобразие посредством вызова такого батника:


@echo off
for /D %%I in ("%~dp0.") do (
 set PROJECT_HOME=%%~fI
 set PROJECT=%%~nI
)
for /D %%I in ("%~dp0..") do set OUTPUT_ROOT=%%~fI

%Delphi%\bin\make.exe -s -B -DPROJECT=%PROJECT% -DPROJECT_HOME=%PROJECT_HOME% -DOUTPUT_ROOT=%OUTPUT_ROOT% -f%PROJECT_HOME%\MakeBPL.bpg %*


А вызов этого батника выглядит например так:
Build.bat -B -DREBUILD "-DCFG=Debug" -DDebug All
Естественно, это я не сам в командной строке печатаю, а редактор настроен выдавать такие команды на Build project.

Естественно, это просто конкретный пример, у тебя может быть по-другому.


 
Суслик ©   (2005-06-14 11:37) [3]

Спасибо! :)


 
Alex Konshin ©   (2005-06-14 12:18) [4]

Кстати, в примере съедены ведущие пробелы, а они важны в makefile ( это баг в движке сайта).
Короче, правила (строки с двоеточиями) должны начинаться с самой первой позиции, а вот строки команд после них - с пробелов. И все правило заканчивается пустой строкой.



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
14-1118159003
Андрей Жук
2005-06-07 19:43
2005.07.11
Сравнение ogty-сорсных СУБД


1-1118610540
Kolan
2005-06-13 01:09
2005.07.11
Не виден текст на кнопках ToolBar.


1-1119496929
john_mag
2005-06-23 07:22
2005.07.11
Excel


14-1118828872
emfw
2005-06-15 13:47
2005.07.11
Вопросы


14-1118144204
Xmen
2005-06-07 15:36
2005.07.11
Программа в СистемТрей