Página 1 de 1

RMAKE - AJUDA URGENTE !

Enviado: 20 Jan 2005 09:45
por Zima
Bom dia aos amigos do fórum,

Bem, o meu caso é o seguinte: estou querendo compilar e linkeditar o meu programa com blinker, utilizando o RMAKE. Vi um tópico aqui sobre esse assunto (COMO COMPILAR SOMENTE ALTERAÇÕES), onde o Maligno deu grandes dicas para o Marcos de como fazer isso usando o MAKE. Tentei adaptar para o meu caso, tanto utilizando tanto o RMAKE como o MAKE, mas não sei onde estou errando, porque não está dando certo.

Transcrevo abaixo meus arquivos RMK e LNK, e agradeço muito desde já aos amigos que puderem me ajudar neste caso.

Saliento que, após tentar executar essa operação com o comando RMAKE WORLDP, o resultado é o seguinte:

WORLDP.RMK(53) Fatal RMAKE/R3012 Syntax error: '@WORLDP.LNK'

Arquivo WORLDP.RMK

Código: Selecionar todos

.prg.obj:
   C:\CLIP53\BIN\CLIPPER $< /m /n..\INCLUDE

WORLDP.OBJ  :       WORLDP.PRG
PROCED.OBJ  :       PROCED.PRG
NET.OBJ     :       NET.PRG
PESQ.OBJ    :       PESQ.PRG
ESTOQUE.OBJ :       ESTOQUE.PRG
MAQUINA.OBJ :       MAQUINA.PRG
VENDAS.OBJ  :       VENDAS.PRG
CAIXA.OBJ   :       CAIXA.PRG
CLIENTES.OBJ:       CLIENTES.PRG
FORNECED.OBJ:       FORNECED.PRG   
TRANSP.OBJ  :       TRANSP.PRG
CLI1.OBJ    :       CLI1.PRG
CLI2.OBJ    :       CLI2.PRG
RELF8.OBJ   :       RELF8.PRG
CLI3.OBJ    :       CLI3.PRG
CLI3R.OBJ   :       CLI3R.PRG
CLI3R1.OBJ  :       CLI3R1.PRG
CLI3R2.OBJ  :       CLI3R2.PRG
CLI3R3.OBJ  :       CLI3R3.PRG
CLI2RM.OBJ  :       CLI2RM.PRG
ORCAMEN.OBJ :       ORCAMEN.PRG
MAQ2ORC.OBJ :       MAQ2ORC.PRG
FATUR.OBJ   :       FATUR.PRG
LISTNF.OBJ  :       LISTNF.PRG
CLI2BLOQ.OBJ:       CLI2BLOQ.PRG
EST2ORC.OBJ :       EST2ORC.PRG
LISTAP.OBJ  :       LISTAP.PRG
CLI2TP.OBJ  :       CLI2TP.PRG
ORCS.OBJ    :       ORCS.PRG
UTILIT.OBJ  :       UTILIT.PRG
METAS1.OBJ  :       METAS1.PRG
DUPLICAT.OBJ:       DUPLICAT.PRG
BLOQUETO.OBJ:       BLOQUETO.PRG
CHEQUES.OBJ :       CHEQUES.PRG
ATUALIZA.OBJ:       ATUALIZA.PRG
EMITDUP.OBJ :       EMITDUP.PRG
CONSDUP.OBJ :       CONSDUP.PRG
EMITBLOQ.OBJ:       EMITBLOQ.PRG
CONSBLOQ.OBJ:       CONSBLOQ.PRG
BLOQR1.OBJ  :       BLOQR1.PRG
FORNCH.OBJ  :       FORNCH.PRG
BLOQOBS.OBJ :       BLOQOBS.PRG
CONTAS.OBJ  :       CONTAS.PRG
CONTASR.OBJ :       CONTASR.PRG
CONTASP.OBJ :       CONTAS.PRG
FOR2CP.OBJ  :       FOR2CP.PRG
CTASPR1.OBJ :       CTASPR1.PRG

WORLDP.EXE  :
C:\BLINKER\BIN\BLINKER @WORLDP.LNK

Arquivo WORLDP.LNK

Código: Selecionar todos


NOBELL
OUTPUT WORLDP
MAP=WORLDP S,A

FILE worldp,proced,net,pesq,estoque,maquina,vendas,caixa,
FILE clientes,forneced,transp,cli1,cli2,relf8,cli3,cli3r,
FILE cli3r1,cli3r2,cli3r3,cli2rm,orcamen,maq2orc,fatur,
FILE listnf,cli2bloq,est2orc,listap,
FILE cli2tp,orcs,utilit,metas1,duplicat,bloqueto,cheques,
FILE atualiza,emitdup,consdup,emitbloq,consbloq,bloqr1,fornch,
FILE bloqobs,contas,contasr,contasp,for2cp,ctaspr1

LIB  blxclp53, Dbfcdx, _Dbfcdx

BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F:250
BLINKER CLIPPER SYMBOL OFF
BLINKER EXECUTABLE COMPRESS 1
Zima
zima@uol.com.br

Ajuda.

Enviado: 20 Jan 2005 10:18
por Marcos
Olá Zima, eu uso o MAKE sem problemas, o Maligno me ajudou bastante nesta impreitada, e ficou ótimo, me ponho a disposição para te ajudar, abaixo está a forma como faço com meu sistema:

*** C.BAT ***
@cls
make -fmenu -l+ -s -DOPT=/m/n/b/p -DCOMP=TESTE
@echo
@echo *****************************************************

*** MENU.MAK ***
menu.exe: MENU.OBJ \
BAIXAPAG.OBJ \
BAIXAREC.OBJ \
BANCOS.OBJ \
CIDADES.OBJ \
CLIENTES.OBJ \
COMPRAS.OBJ \
CONTASAR.OBJ \
CONTASAP.OBJ \
DBEDIBAN.OBJ \
DBEDICAI.OBJ \
DBEDICAP.OBJ \
DBEDICAR.OBJ \
DBEDICID.OBJ \
DBEDICLI.OBJ \
DBEDICOM.OBJ \
DBEDIEMP.OBJ \
DBEDIEST.OBJ \
DBEDIFOR.OBJ \
DBEDIFUN.OBJ \
DBEDIGRC.OBJ \
DBEDIGRU.OBJ \
DBEDIITE.OBJ \
DBEDINAT.OBJ \
DBEDIPED.OBJ \
DBEDIPRO.OBJ \
DBEDIOBS.OBJ \
DBEDITRA.OBJ \
DBEDITRI.OBJ \
DBEDIUSU.OBJ \
DBEDIVET.OBJ \
EMPRESA.OBJ \
ESTORNO.OBJ \
FORNECED.OBJ \
FUNCAO.OBJ \
FUNCIONA.OBJ \
GRUPOS.OBJ \
GRUPOCON.OBJ \
IMPRESSO.OBJ \
INDEXA.OBJ \
ITENS.OBJ \
LIBERACA.OBJ \
MOVCAIXA.OBJ \
MOVICLI1.OBJ \
MOVICLI2.OBJ \
MOVICLI3.OBJ \
MOVICLI4.OBJ \
MOVICLI5.OBJ \
MOVICLI6.OBJ \
NATUREZA.OBJ \
NF.OBJ \
NFPEDIDO.OBJ \
ORCAMENT.OBJ \
PRODUTOS.OBJ \
PROPRIED.OBJ \
RELCLI1.OBJ \
RELEXTCL.OBJ \
RELEXTFO.OBJ \
OBSERVAC.OBJ \
SITUACAO.OBJ \
TRANSPOR.OBJ \
USUARIOS.OBJ \
VENDAS.OBJ \
VETERINA.OBJ

cls
blinker @menu.lnk
.prg.obj:
cls
echo ------------------------------
echo Clipper $& $(OPT) -d$(COMP)
Clipper $& $(OPT) -d$(COMP)

*** MENU.LNK ***
nobell
output menu
map=menu s, a

FI MENU
FI USUARIOS
FI FUNCAO
FI INDEXA
FI FUNCIONA
FI DBEDICID
FI CIDADES
FI LIBERACA
FI EMPRESA
FI DBEDIFUN
FI GRUPOS
FI DBEDIGRU
FI TRANSPOR
FI DBEDITRA
FI NATUREZA
FI DBEDINAT
FI SITUACAO
FI DBEDITRI
FI OBSERVAC
FI DBEDIOBS
FI VETERINA
FI DBEDIVET
FI GRUPOCON
FI DBEDIGRC
FI BANCOS
FI DBEDIBAN
FI IMPRESSO
FI DBEDIUSU
FI DBEDIEMP
FI CLIENTES
FI DBEDICLI
FI FORNECED
FI DBEDIFOR
FI VENDAS
FI ITENS
FI DBEDIITE
FI PRODUTOS
FI NF
FI NFPEDIDO
FI DBEDIPED
FI ESTORNO
FI ORCAMENT
FI MOVICLI1
FI MOVICLI2
FI MOVICLI3
FI MOVICLI4
FI COMPRAS
FI DBEDICOM
FI MOVICLI5
FI MOVICLI6
FI RELCLI1
FI CONTASAP
FI DBEDICAP
FI BAIXAPAG
FI BAIXAREC
FI CONTASAR
FI DBEDICAR
FI MOVCAIXA
FI DBEDIEST
FI DBEDICAI
FI RELEXTCL
FI RELEXTFO
FI PROPRIED
FI DBEDIPRO
#
FI MSG
FI CTUSP
FI __WAIT_B
FI TIMESLIC

LIB BLXCLP52
LIB VL2_52
LIB CLIPPER
LIB SIX2
LIB OSLIB
LIB CLIPON
LIB CTP
LIB Relogio
LIB EDBF


BLI EXE COMPRESS 1
BLI INCREMENTAL OFF
BLI EXE CLIPPER F:250
BLI EXECUTABLE EXTEND # RODANDO EM MEMORIA ALTA
BLI EXECUTABLE NODELETE

Eu faço desta forma, e funciona que é uma beleza, graças ao amigo Maligno.
Abraços,
Marcos.

Enviado: 20 Jan 2005 11:41
por Zima
Obrigado pelo retorno, Marcos.

Eu li o tópico em que o Maligno te ajudou com o MAKE. Ali dizia que o MAKE necessita de um espaço em branco antes de determinados comandos ... Quais comandos ?

Zima

Enviado: 20 Jan 2005 12:42
por janio
Zima,

Enviei pro seu e-mail meus arquivos LNK e RMk (utilizo o Rmake), que até o presente momento tem funcionado 100%.

Sugiro que vc teste de acordo como lá está... depois vc inclui suas particularidades...


Valeu?

Janio

Enviado: 20 Jan 2005 12:46
por Marcos
Vc adaptou seu código ao meu exemplo? E deu erro?
O espaço de que ele se refere é assim, pelo menos eu acho!

cls
blinker @menu.lnk
.prg.obj: // Nesta linha não tém espaço.
cls
echo ------------------------------
echo Clipper $& $(OPT) -d$(COMP)
Clipper $& $(OPT) -d$(COMP)

É um espaço somente.

Enviado: 20 Jan 2005 21:03
por Zima
Depois de muito quebrar a cabeça, fica aqui uma dica sobre o RMAKE:

(obrigado ao Marcos e ao amigo Janio pelos e-mail´s enviados)

Arquivo WORLDP.RMK

.prg.obj:
C:\CLIP53\BIN\CLIPPER $< /m

- na linha acima deixei 3 espaços em branco antes de C:\CLIP...
WORLDP.OBJ : WORLDP.PRG
PROCED.OBJ : PROCED.PRG
.
.
.
WORLDP.EXE :
C:\BLINKER\BIN\BLINKER @ WORLDP.LNK
- na linha acima também deixei 3 espaços em branco antes de C:\CLIP...

Foram esses espaços que resolveram meu problema !

Sds,
Zima


Enviado: 21 Jan 2005 03:26
por Maligno
Zima escreveu:Eu li o tópico em que o Maligno te ajudou com o MAKE. Ali dizia que o MAKE necessita de um espaço em branco antes de determinados comandos ... Quais comandos?
O Make da Borland exige que haja um espaço em branco (ou TAB) antes de qualquer comando E antes do nome de cada arquivo na lista de dependências. Exemplo:

Código: Selecionar todos

\tst\prog.exe: arquivo1.obj arquivo2.obj\
               arquivo3.obj arquivo4.obj

 cls
 blinker @prg.lnk

.prg.obj:
 cls
 echo ***********************************************
 echo Clipper $& $(OPT) -d$(COMP)
 clipper $& $(OPT) -d$(COMP) -d_TESTE_
Definições (só para deixar mais claro): PROG.EXE na primeira linha é chamado de alvo. Depois dos dois pontos (e com um espaço, note) vem a lista de arquivos da dependência e, como pode ver, cada um destes arquivos tem seu nome precedido por um espaço, à exceção de ARQUIVO2.OBJ que tem no final da linha uma barra invertida. Isso indica que há uma continuação de linha. NESTE caso (e apenas neste caso) ARQUIVO3.OBJ até nem precisaria ser precedido por um espaço. O Make sabe que a lista continua e, claro, o nome que vem na linha seguinte se refere a um outro arquivo. Óbvio. Felizmente o programa percebe isso. Ainda assim, eu prefiro colocar alguns espaços antes, mas apenas para melhorar a legilidade. Aliás, os espaços (ou TABs) excedentes não fazem mal algum.

E como eu disse, antes de cada comando há um espaço em branco. A lista de comandos, apenas lembrando, vem após a definição da regra. E aqui um detalhe que ajuda a diminuir a carga de trabalho do programador: há regras explícitas e implícitas. As explícitas direcionam os comandos a um determinado arquivo, explicitamente. Mas eu prefico usar regras ímplicitas. Assim, só preciso indicar os OBJ. O Make se vira para traduzir isso para o compilador. Isso evita que eu tenha que fazer como o colega que monta uma lista do tipo.

AAAAAAAA.OBJ: AAAAAAAA.PRG
BBBBBBBB.OBJ: BBBBBBBB.PRG
etc....

É uma repetição desnecessária. É só saber lidar com o programa que ele faz tudo para você.

Para os que quiserem se inteirar melhor das características do Make (eu não utilizo todas as suas possibilidades), estou disponibilizando o HLP que vem com o C++ Builder 6. É só clicar aqui.

[]'s
Maligno
http://www.buzinello.com/prg

RMAKE - 3 espaços "mágicos"!

Enviado: 20 Fev 2005 23:43
por VMR
Zima,

Muito obrigada pela dica dos 3 espaços em branco. Sempre gostei do Clipper, mas de uns 4 anos para cá só programo nele esporadicamente.

Tenho alguns sistemas desenvolvidos que estão em uso, mas dificilmente preciso dar manutenção. Hoje precisei alterar um deles e resolvi copiar o sistema + o Clipper para um micro com Windows XP e não conseguia fazer o RMAKE funcionar de jeito nenhum. Em um micro antigo com Win 3.1 (!!!) e outro com Win 98 funciona perfeitamente.

Passei boa parte do domingo pesquisando na Web, tentei várias configurações e finalmente achei sua dica dos 3 espaços em branco que foram a solução.

OBRIGADA!!!!!!

PS - Parabéns a todos que participam do Fórum. Foi bom saber que ainda existe tanta gente usando o Clipper.

Enviado: 21 Fev 2005 09:47
por Zima
VMR,

Fico contente que minha dica tenha lhe ajudado. Visite sempre este fórum, pois aqui tem gente amiga disposta a esclarecer nossas dúvidas.

Um abraço,
Zima
zima@uol.com.br