Make/CVS example 1: Difference between revisions

From Wiki**3

No edit summary
(Redirected page to ist:Make/CVS example 1)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{TOCright}}
#REDIRECT [[ist:Make/CVS example 1]]
== The Problem (in Portuguese) ==
<p>Considere quatro ficheiros  <tt> <span style="color: #990000">recurs.cpp</span></tt> (contendo a fun&ccedil;&atilde;o  <tt>  <span style="color: #990000">factrecurs</span> </tt>),  <tt>  <span style="color: #990000">recurs.h</span> </tt> (contendo a declara&ccedil;&atilde;o da fun&ccedil;&atilde;o  <tt> <span style="color: #990000">factrecurs</span>),</tt>  <tt>  <span style="color: #990000">iter.cpp</span> </tt> (contendo a fun&ccedil;&atilde;o  <tt>  <span style="color: #990000">factiter</span> </tt>),  <tt>  <span style="color: #990000">iter.h</span> </tt> (contendo a declara&ccedil;&atilde;o da fun&ccedil;&atilde;o  <tt> <span style="color: #990000">factiter</span>)</tt> e  <tt> <span style="color: #990000">main.cpp</span></tt> (contendo a fun&ccedil;&atilde;o  <tt> <span style="color: #990000">main</span></tt> que invoca sequencialmente ambas as fun&ccedil;&otilde;es anteriores e que inclui  <tt>  <span style="color: #990000">recurs.h</span> </tt> e  <tt>  <span style="color: #990000">iter.h</span> </tt>).</p>
# Construa, com estes cinco ficheiros, um projecto designado    <strong>factorial</strong>, indicando os comandos para o colocar sob o controlo de vers&otilde;es do CVS. Admita que o reposit&oacute;rio j&aacute; existe em    <tt>    <span style="color: #990000">/cvs</span>  </tt>.
# Construa uma    <tt>  <span style="color: #990000">Makefile</span></tt> para gerar o execut&aacute;vel    <tt>  <span style="color: #990000">fact</span></tt>, a partir dos ficheiros anteriores. Indique os comandos necess&aacute;rios para colocar a    <tt>    <span style="color: #990000">Makefile</span>  </tt> no reposit&oacute;rio CVS.
# Considere agora que vai ter dois execut&aacute;veis, cada um invocando a sua fun&ccedil;&atilde;o. Indique as altera&ccedil;&otilde;es &agrave;    <span style="color: #990000">  <tt>Makefile</tt></span> para que passe a gerar os execut&aacute;veis    <tt>  <span style="color: #990000">recurs</span></tt> e    <tt>  <span style="color: #990000">iter</span></tt>, utilizando ambos o mesmo ficheiro    <tt>  <span style="color: #990000">main.cpp</span></tt> (mas diferentes implementa&ccedil;&otilde;es do factorial). Indique as opera&ccedil;&otilde;es do CVS para criar a nova vers&atilde;o do projecto, assumindo que o projecto est&aacute; checked-out no direct&oacute;rio corrente.
# Considere uma nova vers&atilde;o do projecto: pretende-se construir um &uacute;nico execut&aacute;vel    <span style="color: #990000">  <tt>fact</tt></span>, mas a escolha da implementa&ccedil;&atilde;o do factorial &eacute; efectuada em tempo de execu&ccedil;&atilde;o. Considere que os ficheiros    <tt>    <span style="color: #990000">recurs.cpp</span>  </tt> e    <tt>    <span style="color: #990000">recurs.h</span>  </tt> existem num subdirect&oacute;rio    <tt>    <span style="color: #990000">recurs</span>  </tt> e, analogamente, existe um direct&oacute;rio    <tt>    <span style="color: #990000">iter</span>  </tt> para a outra vers&atilde;o. Cada um dos conjuntos apresenta agora a mesma interface para a fun&ccedil;&atilde;o que calcula o factorial:    <tt>    <span style="color: #990000">fact</span>  </tt>. Construa duas bibliotecas din&acirc;micas, ambas designadas por    <span style="color: #990000">  <tt>fact.so</tt></span>, cada uma em seu direct&oacute;rio (  <tt>    <span style="color: #990000">recurs/fact.so</span>  </tt> e    <tt>  <span style="color: #990000">iter/fact.so</span></tt>). A selec&ccedil;&atilde;o da variante a utilizar faz-se definindo a vari&aacute;vel de ambiente    <tt>  <span style="color: #990000">LD_LIBRARY_PATH</span></tt> com o direct&oacute;rio apropriado. Indique quais os ficheiros iniciais modificados, face &agrave; al&iacute;nea anterior, a nova    <tt>  <span style="color: #990000">Makefile</span></tt> e os comandos CVS necess&aacute;rios para que o reposit&oacute;rio passe a conter a nova vers&atilde;o.
# Modifique a al&iacute;nea anterior para que o utilizador possa escolher a variante a utilizar atrav&eacute;s de um argumento na linha do comando    <tt>  <span style="color: #990000">fact</span></tt>, respectivamente    <tt>  <span style="color: #990000">recurs</span></tt> ou    <tt>  <span style="color: #990000">iter</span></tt>. Indique quais os ficheiros iniciais modificados, a nova    <tt>  <span style="color: #990000">Makefile</span></tt> e os comandos CVS necess&aacute;rios para registar a nova vers&atilde;o.</li> </ol>
 
== Implementation ==
 
The following sections present possible implementations.

Latest revision as of 18:41, 6 December 2018