Project

General

Profile

Revision f950c95b

IDf950c95b7c45184521e17d83bb13d606d253283b
Parent a0cfe9c0
Child c912c63a

Added by Manuel Costa about 7 years ago

Conclusão atualizada. Erros corrigidos. Bibliografia acrescentada

View differences:

documento.tex
85 85
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
86 86
\chapter{Resumo}
87 87

  
88
Este trabalho, no âmbito da Unidade Curricular \ac{LABI} do primeiro ano do \ac{miect}, aborda 3 ferramentas de automaçao de projectos, nomeadamente as \texit{Autotools}, \texit{ANT Tools} e o \texit{CMake}. As 3 ferramentes são brevemente exploradas e analisadas, apresentando-se as suas vantagens e desvantagens em relação a outras ferramentas e ao âmbito do seu uso. São ainda apresentados alguns exmplos para cada ferramenta abordada neste trabalho. Comparamos também as \texit{ANT Tools} e o \texit{CMake} ao \texit{Make} uma vez que foi a ferramente que exploramos na aula de \ac{LABI}.
88
Este trabalho, no âmbito da Unidade Curricular \ac{LABI} do primeiro ano do \ac{miect}, aborda 3 ferramentas de automaçao de projectos, nomeadamente as \textit{GNU Autotools}, \textit{ANT Tools} e o \textit{CMake}. As 3 ferramentes são brevemente exploradas e analisadas, apresentando-se as suas vantagens e desvantagens em relação a outras ferramentas e ao âmbito do seu uso. São ainda apresentados alguns exemplos para cada ferramenta abordada neste trabalho. Comparamos também as \textit{ANT Tools} e o \textit{CMake} ao \textit{GNU Make} uma vez que foi a ferramente que exploramos na aula de \ac{LABI}.
89 89
Posteriormente apresentamos as nossas conclusões sobre o tema, Ferramentas de automação.
90 90

  
91 91
\chapter{Introdução}
......
93 93

  
94 94
Este trabalho surge no âmbito da Unidade Curricular \ac{LABI} do primeiro ano do \ac{miect}. Entre os temas disponíveis, optámos por este uma vez que iremos abordar, ainda este ano, estes conteúdos em outras unidades curriculares. É também um tema com várias opiniões distintas na informática, portanto achamos interessante analisar algumas das ferramentas de automação existentas para melhor entendermos as várias ferramentas.
95 95

  
96
Este documento está dividido em quatro capítulos. Depois desta introdução, no \autoref{chap.gnu} abordamos as \texit{autotools}, no \autoref{chap.ant} é abordada as ferramentas \texit{Ant}, no \autoref{chap.cmake} é abordado o \autoref{CMake}, sendo depois apresentada a metedologia no \autoref{chap.metedologia}. Finalmente, no \autoref{chap.conclusao} são apresentadas as conclusões do trabalho.
97

  
98
\part{GNU \textit{Autotools}}
96
Este documento está dividido em quatro capítulos. Depois desta introdução, no \autoref{chap.gnu} são aboradas as \textit{GNU autotools}, no \autoref{chap.ant} são abordadas as ferramentas \textit{Ant}, no \autoref{chap.cmake} é abordado o \textit{CMake}.
99 97
\label{part.gnu}
100 98
\chapter{GNU}
101 99
\label{chap.gnu}
......
234 232
%
235 233
%
236 234
\part{CMake}
237
\label{part.cmake}
238 235
\chapter{CMake}  %Explicar quem é o pessoal do cmake
236
\label{chap.cmake}
239 237
\section{Apresentação} %Pegar no cmake propriamente dito e por aí fora
240 238
\subsection{O que é?}
241 239

  
242
Outra alternativa às \texit{Apache Ant Tools} e o \textit{GNU Make}, é o \texit{CMake}, software open-source, que nasceu da necessidade de um sistema de compilaçao multiplataforma e o seu autor foi Bill Hoffman, da Kitware. O \texit{CMake} é usado em conjunto com a ferramente de compilação de cada sistema.
240
Outra alternativa às \textit{Apache Ant Tools} e o \textit{GNU Make}, é o \textit{CMake}, software open-source, que nasceu da necessidade de um sistema de compilaçao multiplataforma e o seu autor foi Bill Hoffman, da Kitware. O \textit{CMake} é usado em conjunto com a ferramente de compilação de cada sistema.
243 241
\section{Cmake vs GNU Make} % Comparar com enumerate
244 242

  
245
Também é uma ferramente open-source à semelhança do \texit{make}, mas obviamente têm as suas diferenças:
243
Também é uma ferramente open-source à semelhança do \textit{make}, mas obviamente têm as suas diferenças:
246 244
\begin{enumerate}
247
\item Nao compila o código, mas sim gera os \texit{build files} de acordo com a plataforma aonde está a correr, por exemplo, \texit{Makefiles} no \texit{UNIX}.
248
\item É uma ferramente mais apropriada a projectos multiplataforma, enquanto que no \texit{make} teriamos de criar um \texit{Makefile} por plataforma.
249
\item O \texit{CMake} consegue lidar bem com hierarquias de directórios complexas e aplicaçoes que dependem de várias librarias.
245
\item Nao compila o código, mas sim gera os \textit{build files} de acordo com a plataforma aonde está a correr, por exemplo, \textit{Makefiles} no \textit{UNIX}.
246
\item É uma ferramente mais apropriada a projectos multiplataforma, enquanto que no \textit{make} teriamos de criar um \textit{Makefile} por plataforma.
247
\item O \textit{CMake} consegue lidar bem com hierarquias de directórios complexas e aplicaçoes que dependem de várias librarias.
250 248
\item Requer menos código para tarefas mais triviais.
251 249
\end{enumerate}
252 250

  
253
\subsection{Contras à utilizaçao do \texit{CMake}}
251
\subsection{Contras à utilizaçao do \textit{CMake}}
254 252

  
255
Uma das maiores dificuldades na utilizaçao do \texit{CMake} é o facto de ter a sua própria linguagem, não tão intuitiva como outras ferramentas como por exemplo as \texit{AutoTools}. O facto do \texit{CMake} não compilar mas sim gerar os \texit{buildfiles} também pode ser visto como uma desvantagem uma vez que continuamos a ter de executar o comando make para compilar o projecto. É necessário ainda que o sistema aonde trabalhamos tenho \texit{CMake} instalado.
253
Uma das maiores dificuldades na utilizaçao do \textit{CMake} é o facto de ter a sua própria linguagem, não tão intuitiva como outras ferramentas como por exemplo as \textit{AutoTools}. O facto do \textit{CMake} não compilar mas sim gerar os \textit{buildfiles} também pode ser visto como uma desvantagem uma vez que continuamos a ter de executar o comando make para compilar o projecto. É necessário ainda que o sistema aonde trabalhamos tenha o \textit{CMake} instalado.
256 254

  
257 255
\subsubsection{Exemplos} %Imagens exemplo a explicar a comparação feita antes
258 256
\begin{figure}[h]
259 257
\includegraphics[scale=0.5]{cmake.jpg}
260
\caption{Exemplo de código \texit{CMake}}
258
\caption{Exemplo de código \textit{CMake}}
261 259
\end{figure}
262 260

  
263
O código compila o ficheiro HelloWorld.java num ficheiro HelloWord.jar e executa o .jar usando o JVM. A variável CMAKE_JAVA_COMPILE_FLAGS pode ser usada para especificar \texit{compile flags}.
261
O código compila o ficheiro HelloWorld.java num ficheiro HelloWord.jar e executa o .jar usando o JVM. A variável CMAKE\textunderscore JAVA\textunderscore COMPILE\textunderscore FLAGS pode ser usada para especificar \textit{compile flags}.
264 262

  
265 263
\subsection{Conclusão - CMake} %Conclusão do CMake comparado com GNU
266 264

  
267
Podemos concluir então que, apesar de ter a sua própria linguagem, não muito intuitiva, o CMake é uma ferramenta de extrema utilidade se prentendemos que o nosso projecto seja multiplataforma uma vez que se adapta ao sistema em que está e gera os \texit{build-files} necessários à compilaçao do projecto de acordo com o sistema aonde estamos a trabalhar.
265
Podemos concluir então que, apesar de ter a sua própria linguagem, não muito intuitiva, o CMake é uma ferramenta de extrema utilidade se prentendemos que o nosso projecto seja multiplataforma uma vez que se adapta ao sistema em que está e gera os \textit{build-files} necessários à compilaçao do projecto de acordo com o sistema aonde estamos a trabalhar.
268 266
%
269 267
\chapter{Metodologia}
270 268
\label{chap.metodologia}
......
273 271

  
274 272
\chapter{Conclusões}
275 273
\label{chap.conclusao}
276
Apresenta conclusões
274
Para automatizar o processo de compilação de projetos de programação, foram aparecendo ferramentas para rentabilizar tempo ao programador e para tornar a tarefa mais eficaz e menos suscetível a erros.
275
Neste trabalho são avaliadas duas ferramentas partindo como base de comparação o \ac{GNU} \textit{Make}: \textit{Ant} e \textit{CMake}. As três têm como principais objetivos:
276
\begin{enumerate}
277
\item Lidar com o repetitivo processo de compilação, ainda que cada uma delas tenha os seus próprios métodos.
278
\item Facilitar a portabilidade dos projetos entre Sistemas Operativos. Neste ponto depende muito do tipo de projeto, por exemplo num projeto em Java é mais eficaz a utilização do \textit{Ant}.  
279
\item Lidar com as dependências de cada projeto.
280
\end{enumerate}
281
Conclui-se que estas ferramentas são fundamentais na hora da realização de um projeto em programação. Elas são utilizadas pelos programadores desde muito cedo, ainda que estes não estejam conscientes disso graças aos IDE's que estão programados para lidar com este processo. Contudo programadores mais experientes recomendam que, em projetos mais elaborados, sejam os próprios a lidar com a compilação através destas ferramentas. 
282
Não existem apenas três ferramentas de automação pois para cada uma delas existem debilidades que,posteriormente, são melhoradas e que fomentam o aparecimento de novas ferramentas.
277 283

  
284
\chapter{Bibliografia}
285
\begin{enumerate}
286
\item \url{http://ant.apache.org}
287
\item \url{https://en.wikipedia.org/wiki/Ant}
288
\item \url{https://en.wikipedia.org/wiki/CMake}
289
\item \url{https://cmake.org}
290
\item \url{http://www.tutorialspoint.com/ant/ant_introduction.html}
291
\item Guião prático de LABI
292
\end{enumerate}
278 293
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
279 294
\chapter*{Acrónimos}
280 295
\begin{acronym}

Also available in: Unified diff