No clipper é simples elaborar um *.bat e um *.lnk para a compilação, sem o utilitário RMAKE, conforme exemplos no "modelo.zip".
Realmente não acho uma boa idéia dispensar uma ferramenta como o RMake ou Make.
Já no xHarbour, compilar c/HARBOUR e linkar c/BLD_B32 não segue o mesmo critério, necessitando (?) do HBMAKE ou outra forma, conforme você mencionou em outro POST.
Mas se for para dispensar o Make no Clipper, pode-se igualmente dispensá-lo também no caso do XHarbour. Mas também não é uma boa idéia.
Por gentileza, ao analisar "COMPILA2.BAT" e "CORBLINK.LNK", verifique como é simples e funcional o encadeamento dos *.prg's.
Como eu disse, verei seu ZIP hoje à noite.
Minha solicitação é a orientação para gerar um script para xHarbour tão simples quanto, sem a preocupação de "recompilar somente o necessário".
Da forma como eu entendo sua colocação, você quer apenas usar batch para compilar, sem a preocupação de "recompilar somente o necessário". Como eu disse: não acho isso uma boa idéia, principalmente para quem tem, como eu, sistemas com mais de 200 fontes. Compilar tudo por causa da alteração ocorrida em apenas um fonte? Realmente essa idéia não é nada atraente. O Make é uma ferramenta excelente e, se a dominarmos, com ela só temos a ganhar. A minha reclamação anterior foi com relação ao script gerado pelo HBMake, que é horrível. Fiz na unha e consegui um script plenamente funcional, com um terço do tamanho, e bem mais inteligível. Pode-se fazer, e até lhe dou a idéia, um novo HBMake, mais enxuto, que consiga gerar scripts melhores. Ou pelo menos mais direcionados.
Agora, se eu entendi errado sua solicitação, por favor, me explique melhor.
Eu não estou encontrando outra forma para viabilizar o mesmo fonte para CLIPPER e xHARBOUR senão incluir explicitamente em cada *.prg os comandos
FUNCTION Funcao()
RETURN NIL
A padronização a que me referi seria esta.
Agora eu entendi. Mas veja bem, Janis. Seu problema se divide em dois: primeiro, pelo que entendi, é o
FUNCTION na primeira linha de cada fonte; e segundo: a troca da forma
DO PROG WITH <X1>,... pela forma
PROG(<X1>,...).
O primeiro problema é fácil de resolver e nem consumirá muito tempo, mesmo que se trate de um grande volume de fontes. Basta ir à primeira linha de cada fonte e inserir um simples nome. Dá trabalho, mas o esforço compensa. Além do que, convenhamos, a declaração
FUNCTIONé a forma mais correta de iniciar um bloco de código.
O segundo problema não deixa de ser fácil de resolver também, principalmente se você usar um editor de texto como o UltraEdit, por exemplo. Você pode pesquisar todas as ocorrências de uma determinada string. Encontrando, você só precisará trocá-las pela forma correta. Nota: o próprio NG do Clipper não recomenda o uso do comando
DO.
Ainda assim, e até para ficar mais fácil ainda, você pode manter esses comandos
DO e criar um comando simples de tradução, e trocar pelo #command que já existe no STD.CH do Clipper. Seria algo como:
Código: Selecionar todos
#command DO <proc> [ WITH <list,...> ] => <proc>([<list>])
Não sei se vai funcionar. Como acabei de escrevê-lo pode ter algum erro de sintaxe. Por isso, teste antes num programa qualquer. Se estiver certo, você verá no PPO substituições do tipo:
Código: Selecionar todos
Comando original Substituído por
------------------------- -------------------------
DO MEUPROG MEUPROG()
DO MEUPROG WITH .F. MEUPROG(.F.)
DO MEUPROG WITH 1,2,"TST" MEUPROG(1,2,"TST")
Isso evita que você tenha que alterar todos os seus fontes. O Clipper não tem esse #command. Mas o XHarbour deveria ter. Não sei. Tem? Se não tiver, inclua-o no header que substitui o STD.CH, seja lá que nome tiver.
Particularmente não gosto desta solução, até porquê, já não uso
DO há pelo menos uns 12 anos. Mas essa substituição vai resolver seu problema com um mínimo de esforço. Se lhe servir, ótimo.
[]'s
Maligno
http://www.buzinello.com/prg