Estoy tratando de consolidar cierta información de compilación utilizando un archivo MAKE común. Mi problema es que quiero usar ese archivo MAKE desde diferentes niveles de subdirectorio, lo que hace que el valor del directorio de trabajo (pwd
) sea impredecible. Por ejemplo:Ruta de directorio común del archivo MAKE
# Makefile.common
TOP := $(shell pwd)
COMPONENT_DIR := $(TOP)/component
COMPONENT_INC := $(COMPONENT_DIR)/include
COMPONENT_LIB := $(COMPONENT_DIR)/libcomponent.a
Si incluyo Makefile.common
de un subdirectorio, como tal, el directorio $(TOP)
es incorrecto y todo lo demás sigue su ejemplo:
# other_component/Makefile
include ../Makefile.common
# $(COMPONENT_LIB) is incorrectly other_component/component
Cuál es la mejor manera de conseguir Makefile.common
utilizar su propia ruta de directorio en lugar de la más voluble pwd
?
Esto funcionó maravillosamente en mi cuadro dev, pero me di cuenta de que la máquina de destino se estaba ejecutando make 3.79, y la característica MAKEFILE_LIST se agregó en make 3.80: http://www.mail-archive.com/[email protected]/ msg05902.html – cdleary
Parece que MAKEFILE_LIST no contiene rutas completas, solo rutas relativas. – kbyrd
Mucho después del hecho, pero si ayuda a alguien: aquí hay un fragmento que le dará una ruta absoluta, pero no depende de realpath (en función de esta respuesta y [esta publicación del blog] (http: //blog.jgc .org/2007/01/what-makefile-am-i-in.html)): 'TOP: = $ (dir $ (CURDIR)/$ (palabra $ (palabras $ (MAKEFILE_LIST)), $ (MAKEFILE_LIST))) ' –