Форум: "Потрепаться";
Текущий архив: 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.038 c