Главная страница
    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.47 MB
Время: 0.071 c
3-1117522893
galexis
2005-05-31 11:01
2005.07.11
Ошибка "Разрушительный сбой"


1-1118732790
Ega23
2005-06-14 11:06
2005.07.11
Зачем Borland так делает???


6-1112614864
Muh
2005-04-04 15:41
2005.07.11
Какого ... закрыли мои сообщения??


4-1116046471
Другой Дмитрий
2005-05-14 08:54
2005.07.11
Окно SHGetSpecialFolderLocation возникает в одном месте экрана.


4-1116186014
Gnut
2005-05-15 23:40
2005.07.11
Обои на раб. стол.





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