Muestra las diferencias entre dos versiones de la página.
docu:fw:bm:make [2015/04/03 10:35] mcerdeiro creado |
docu:fw:bm:make [2015/04/12 10:24] (actual) mcerdeiro [Module Make] |
||
---|---|---|---|
Línea 15: | Línea 15: | ||
### | ### | ||
- | El Makefile que se encuentra en el en el root al hacer un git clone o descargar una release es el root make. **Por lo general no se debe editar este Makefile**. Si cree que debe editar este Makefile contacte [[desarrollo:firmware:plan_desarrollo_fw#equipo_tecnico_a_cargo|al responsable del Makefile]]. | + | El Makefile que se encuentra en el en el root al hacer un **git clone** o descargar una release es el root make. **Por lo general no se debe editar este Makefile**. Si cree que debe editar este Makefile contacte [[desarrollo:firmware:plan_desarrollo_fw#equipo_tecnico_a_cargo|al responsable del Makefile]]. |
### | ### | ||
- | Para seleccionar y configurar las variables del Makefile debe crear su propio **Makefile.mine** copiando el **Makefile.config** por ejemplo ejecutando: | + | Para seleccionar y configurar las variables del Makefile debe crear su propio **Makefile.mine** copiando el **Makefile.config** en el directorio raiz del firmware, por ejemplo ejecutando: |
<code> | <code> | ||
cp Makefile.config Makefile.mine | cp Makefile.config Makefile.mine | ||
</code> | </code> | ||
- | |||
==== Makefile.mine ==== | ==== Makefile.mine ==== | ||
Línea 42: | Línea 41: | ||
<note tip> | <note tip> | ||
- | Si se setea la variable **BOARD** no es necesario setear **ARCH**, **CPUTYPE**, ni **CPU** ya que las mismas serán seteadas de forma automática. | + | Sólo necesario setear la variable **BOARD**, y en función de ésta automáticamente se setean **ARCH**, **CPUTYPE**, **CPU**, y **COMPILER**, por lo que no es necesario hacerlo a mano y pueden comentarse estas definiciones mediante **#**.\\ |
+ | La variable **PROJECT_PATH** si utiliza cygwin debe definirse de manera similar a: \\ | ||
+ | **PROJECT_PATH ?= $(DS)cygdrive$(DS)c$(DS)Temp$(DS)Proyecto1** | ||
</note> | </note> | ||
- | |||
Se utiliza la variable $(DS) para indicar el separador de directorios (de manera automática se usa '/' para linux y '\' para windows). | Se utiliza la variable $(DS) para indicar el separador de directorios (de manera automática se usa '/' para linux y '\' para windows). | ||
En el mismo Makefile están comentados los valores que pueden tomar cada uno de los parámetros. | En el mismo Makefile están comentados los valores que pueden tomar cada uno de los parámetros. | ||
+ | |||
+ | <note tip>La utilización de un **Makefile.mine** es opcional, también es posible setear las variables deseadas como **BOARD** y **PROJECT_PATH** como variables de entorno utilizando los comandos set (en windows) y export (en linux). De esta misma forma es como por ejemplo el IDE basado en eclipse informa al Makefile que board o proyecto debe ser compilad.</note> | ||
==== Makefile del proyecto ==== | ==== Makefile del proyecto ==== | ||
### | ### | ||
- | Cada proyecto tiene también su Makefile. El mismo se encuentra bajo el directorio **mak** en el directorio principal del proyecto o ejemplo. En el ejemplo **examples/blinking** el makefile del ejemplo se encuentra en **examples/blinking/mak** y se llama **Makefile**. | + | Cada proyecto tiene también su Makefile. El mismo se encuentra bajo el directorio **mak** en el directorio principal del proyecto o ejemplo. En el ejemplo **examples/blinking** el makefile del ejemplo se encuentra en **examples/blinking/mak** y se llama **Makefile**. Este archivo **solo necesita edición en la variable MODS**, todo el resto es automático si se mantiene la estructura de directorios usada en los ejemplos (src, inc, mak, etc). |
### | ### | ||
Este makefile contiene las siguientes definiciones: | Este makefile contiene las siguientes definiciones: | ||
- | * **project** el nombre del proyecto y por ende nombre del ejecutable. | + | * **PROJECT_NAME** el nombre del proyecto, se define automático en base el directorio usado. |
- | * **$(project)_PATH** es el directorio del proyecto. | + | * **INC_FLES** los paths a indicar al compilador para buscar includes files. |
- | * **INCLUDE** los paths a indicar al compilador para buscar includes files. | + | |
* **SRC_FILES** archivos a compilar ya sean archivos c como c++. | * **SRC_FILES** archivos a compilar ya sean archivos c como c++. | ||
* **OIL_FILES** configuración del sistema operativo (si es utilizado). | * **OIL_FILES** configuración del sistema operativo (si es utilizado). | ||
Línea 90: | Línea 91: | ||
<code> | <code> | ||
+ | # library | ||
LIBS += template | LIBS += template | ||
+ | # version | ||
+ | template_VERSION = 0.8.2 | ||
# library path | # library path | ||
template_PATH = $(ROOT_DIR)$(DS)modules$(DS)template | template_PATH = $(ROOT_DIR)$(DS)modules$(DS)template | ||
Línea 102: | Línea 106: | ||
### | ### | ||
- | Cada [[desarrollo:firmware:arq_estatica_fw#modulos|módulo]] se agrega como una librería, para agregar a la variable LIBS en nombre del módulo. A continuación se define el path del módulo, el path a los source files, el path a los include files y las source files que se desean compilar. | + | Cada [[desarrollo:firmware:arq_estatica_fw#modulos|módulo]] se agrega como una librería, para agregar a la variable LIBS en nombre del módulo. A continuación se define la versión del módulo, el path al módulo, el path a los fuentes, el path a los include files y las source files que se desean compilar. |
### | ### | ||
Línea 109: | Línea 113: | ||
* modulename_INC_PATH | * modulename_INC_PATH | ||
* modulename_SRC_FILES | * modulename_SRC_FILES | ||
+ | |||
+ | <- docu:fw:bm:estructura|Estructura de directorios ^ ^ docu:fw:bm:examples|Ejemplos -> |