Skip to content

manu-learning/aprende-makefile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Guia Básica Makefile

Conceptos

  • Se utiliza make para cualquier proyecto con dependencias entre archivos, no solo para compilar programas de C..
  • En el lenguaje C la relación de dependencia es
    1. Los ejecutables dependen de los file objects .o
    2. Los file objects .o dependen de su código fuente .c y de los archivos de cabecera .h que incluyan los .c

Observaciones acerca de la compilación de programas con el lenguaje C

  • Los archivos .o son objetos
  • Los .h son archivos de cabecera (headers), se incluyen declaraciones de estructuras, variables globales y funciones (prototipos/firmas)
  • Los .c son archivos fuente, los que tienen la implementación del programa (de las funciones)

Ejemplo Introductorio - Diagramas con Plantuml y Emacs

Instalación de Plantuml

DOWNLOAD_VERSION=1.2023.1
DOWNLOAD_NAME=plantuml-$(DOWNLOAD_VERSION).jar
DOWNLOAD_URL=https://github.com/plantuml/plantuml/releases/download/v$(DOWNLOAD_VERSION)/$(DOWNLOAD_NAME)

download-plantuml:
  $(info Descargando plantuml..)
  cd ~ && curl -O $(DOWNLOAD_URL)

Configuración de Emacs

;; este lenguaje es elisp, no es necesario entenderlo para saber GNU Make
(setq org-plantuml-jar-path (expand-file-name "~/plantuml.jar"))
(add-to-list 'org-src-lang-modes '("plantuml" . plantuml))
(org-babel-do-load-languages 'org-babel-load-languages '((plantuml . t)))

Referencias

Referencias Oficiales

  1. Makefile Source Code blocks in Org mode (orgmode.org)
  2. Plantuml integration with Emacs (plantuml.com)

Libros Referentes

  1. https://www.oreilly.com/openbook/make3/book/

Referencias

Referencias Oficiales

  1. GNU Make Manual (gnu.org)
  2. Static Usage (gnu.org)
  3. GCC - Link Options (gcc.gnu.org)
  4. Implicit Variables (gnu.org/make)

Referencias de Universidades

  1. Manejo de Proyectos a traves de Makefiles (Universidad Técnica Federico Santa Maria - profesores.elo.utfsm.cl)
  1. The Make (UNIX) Utility (Emory College of Arts and Sciences - mathcs.emory.edu)
  2. Construcción de archivos makefile (Universidad Carlos III de Madrid - it.uc3m.es)
  3. A sample makefile and how it works (Duke University - courses.cs.duke.edu)

Referencias Extraoficiales

  1. Makefile cheatsheet (devhints.io)
  2. Utilidad Make, construir proyectos grandes (zator.com)
  3. Learn Makefiles (makefiletutorial.com)
  4. Practical Makefiles, by Example (nuclear.mutantstargoat.com)
  5. Most frequently used gcc cmd line options (thegeekstuff.com)
  6. Advanced auto dependency generation (make.mad-scientist.net)
  7. Autodependencies with GNU Make (scottmcpeak.com)
  8. Variables and Macros - Managing Projects with GNU Make (oreilly.com)
  9. Generation of dependency rules (fatalerrors.org)
  10. Automation and Make (swcarpentry.github.io)
  11. Understanding and using makefile Flags (earthly.dev)
  12. Introduction How to Use Makefiles (sliderplayer.com)
  13. Cosas que posiblemente no sepas sobre gnu make #1 (jjmerelo.medmium.com)
  14. Cosas que posiblemente no sepas sobre gnu make #2 (jjmerelo.medmium.com)
  15. Comando AR, para crear bibliotecas estáticas (islabit.com)

Referencias Issues

  1. Makefile vpath not working for header files (py4u.net)
  2. What is the difference between % and * (stackoverflow.com)
  3. A makefile with multiple executables (stackoverflow.com)
  4. How to add headers to a Makefile (stackoverflow.com)
  5. Makefile header dependencies (stackoverflow.com)
  6. Wildcard to obtain list of all directories (stackoverflow.com)
  7. Sources from subdirectories in makefile (stackoverflow.com)
  8. Alternative to watch make (stackoverflow.com)
  9. Makefile silence the maken line specifically (stackoverflow.com)
  10. Defining a default target, first target Vs .DEFAULT_GOAL (stackoverflow.com)

Referencias Youtube

  1. Module 05, Lecture 43 - Makefiles (by nptelhrd)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published