Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
14-1118826756
sco123
2005-06-15 13:12
2005.07.11
Требуется программист на Delphi


10-1095145890
Суслик
2004-09-14 11:11
2005.07.11
structured storage


1-1119534181
DimMih
2005-06-23 17:43
2005.07.11
Подскажите пожалуйста как реализовать кратность?


6-1112888304
Egorr
2005-04-07 19:38
2005.07.11
Шифрование траффика-TIdMappedPortTCP


3-1117001327
ANB
2005-05-25 10:08
2005.07.11
Как скопировать таблицу из схемы в схему (Oracle)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский