Главная страница
    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.46 MB
Время: 0.04 c
14-1118036827
КаПиБаРа
2005-06-06 09:47
2005.07.11
Уважение к чужому мнению


6-1112681299
peppo
2005-04-05 10:08
2005.07.11
Коннект "решительно отвергается"


9-1112235066
Xeno
2005-03-31 06:11
2005.07.11
BumpMapping в GLScene


1-1118405626
Vitalis
2005-06-10 16:13
2005.07.11
Работа со сканером


14-1118722871
Vlad Oshin
2005-06-14 08:21
2005.07.11
Pomogite s russkimi bukvami





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский