¿Cómo puedo crear una variable sobre la marcha desde MAKEFILO, cuyo valor sería todo el contenido de otro archivo de datos?Crear una variable en un archivo MAKE leyendo los contenidos de otro archivo
Respuesta
supongo que le gusta para establecer una variable en su Makefile al contenido de otro archivo:
FILE=test.txt
VARIABLE=`cat $(FILE)`
target:
echo $(VARIABLE)
Eso es lo que he estado intentando pero me aparece el error: "'VARIABLE' no se reconoce como un comando interno o externo, programa operable o archivo por lotes." Por favor, tenga en cuenta que estoy usando GNU make Windows y que estoy tratando de hacer esto de una de mis metas: todo: VARIABLE = 'cat $ (PATH_TO_MY_DATA_FILE)' – Srinath
de haber introducido la definición de la variable por encima de la ' todo: '¿verdad? [edit] Acabo de editar la respuesta a mi test-Makefile local que funciona usando GNU Make Windows 3.81 –
En realidad, no puedo poner la definición VARIABLE sobre todo: porque PATH_TO_MY_DATA_FILE no existe hasta que se hayan ejecutado algunos comandos en all: target. Como alternativa, lo que he hecho es dividir las cosas en dos makefiles (creado una submatriz) y declarar la VARIABLE en la parte superior de la subpágina y ahora funciona como un amuleto. – Srinath
Suponiendo GNU make:
file := whatever.txt
variable := $(shell cat ${file})
No funciona en Solaris con '/ usr/ccs/bin/make'. – ceving
@ceving Utilice la marca estándar GNU. Solaris make es una aplicación no portátil. –
Gnu make no es ni estándar ni más portátil que los Solaris. "Popular" es tu palabra.Si consideramos seriamente la portabilidad y la conformación estándar, quédese con posix. – soubunmei
cat
no existe en Windows . Solución que funciona para Linux y Windows:
cat := $(if $(filter $(OS),Windows_NT),type,cat)
variable := $(shell $(cat) filename)
Explicación: parece que en Windows no siempre es variable OS
entorno definido para que sea igual a 'Windows_NT'. De esta forma, para Windows se utiliza el comando type
, para Windows se usa cat
.
Como no se ha especificado la plataforma, ésta es la manera como funciona en Solaris:
VERSION:sh = cat VERSION
all:
echo $(VERSION)
GNU make versión 4.2 es compatible con archivos operación de lectura, por lo que respecta a Maxim Egorushkin 's gran respuesta hay una forma opcional de resolver este problema ahora:
file:=test.txt
variable:=$(file < $(FILE))
- 1. Leyendo un archivo .pdb
- 2. leyendo un archivo en python
- 3. de fragmentos para crear un archivo de los contenidos de una burbuja en Java
- 4. Cómo documentar un archivo MAKE?
- 5. Leyendo un archivo zip dentro de un archivo jar
- 6. extensión de archivo MAKE
- 7. JQuery.getJSON() leyendo un archivo local
- 8. Obtener los contenidos de un archivo con PHP FTP
- 9. Leyendo un archivo de texto en java
- 10. Cómo comprobar si un archivo existe en un archivo MAKE
- 11. Leyendo archivo en una estructura (C++)
- 12. C#: Anexar * contenidos * de un archivo de texto a otro archivo de texto
- 13. ¿Es posible importar un archivo MX sin evaluar los contenidos?
- 14. leyendo un archivo .bmp en C++
- 15. cómo obtener una variable de un archivo a otro archivo en Node.js
- 16. extensión de archivo MAKE
- 17. PHP leyendo un archivo de cookie
- 18. Leyendo un archivo de texto y convirtiéndolo en una cadena
- 19. Leyendo un archivo en una matriz de bytes (PHP)
- 20. Qt - leyendo de un archivo de texto
- 21. Depende del archivo make
- 22. ¿Cómo crear una clase de JavaScript en otro archivo js?
- 23. Leyendo JSON desde un archivo de texto
- 24. Leyendo un archivo * .dmp de Windows
- 25. ¿Cómo ver los contenidos de un archivo APK de Android?
- 26. Leyendo un archivo de texto simple
- 27. Obtener el nombre del archivo MAKE del archivo MAKE
- 28. Leyendo un archivo usando el escáner Java
- 29. PHP leyendo un archivo csv efectivamente
- 30. ¿Qué significa "todo" en un archivo MAKE?
which makefile? – raym0nd