es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: mostrando que “all” no existe al intentar crear el archivo makefile.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy un principiante absoluto en este campo y actualmente estoy modificando el archivo de compilación de Windows para que se ejecute en Linux, estoy utilizando Jenkins para la automatización y tiene el siguiente seudocódigo.

Archivo de compilación makefile:

PROJECT=abc.exe
UNITS=$(BOXUNIT)\xyzcom
EXEREF=C:\Program files\common\$(PROJECT)

all:xyz
xyz:
        @"$(MAKE)" $(MFLAGS) TARGET=WIN32\Release\$(PROJECT) binary

%include ../../boxunit/file.mak

Este código llama al archivo file.mak que tiene seudocódigo..

Archivo file.mak:

PLATFORM:=$(TARGET,D,D)
CONFIG:=$(TARGET,D,B)
NAME:=$(TARGET,B)
EXT:=$(TARGET,E)

y el resto del código depende de estos valores.

Para ejecutar el archivo de compilación en Linux, he realizado los siguientes cambios y he creado los directorios necesarios.

PROJECT=abc
UNITS=$(BOXUNIT)/xyzcom
EXEREF=/home/common/$(PROJECT)

all:xyz
xyz:
        "$(MAKE)" $(MFLAGS) TARGET=LINUX64/Release/$(PROJECT) binary

include ../../boxunit/file.mak

Cuando compilo el archivo, el valor de TARGET no se asigna a los valores en el archivo file.mak. En su lugar, los valores de PLATFORM, CONFIG, etc. están en blanco y obtengo errores como “all” no existe y “xyz” no existe.

Será realmente útil saber si lo que estoy haciendo es correcto o incorrecto y saber si existe otra forma mejor de hacer esto.

Cualquier ayuda en esto es realmente apreciada. Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en linux y windows y makefile, puedo sugerir algunos cambios al makefile para que se ejecute en linux utilizando la automatización de Jenkins.

    En primer lugar, para ejecutar el makefile en Linux, debe reemplazar la ruta de Windows por la ruta de Linux. Por ejemplo, debe reemplazar la ruta C:\Program files\common\$(PROJECT) por /home/common/$(PROJECT).

    En segundo lugar, debe cambiar la sintaxis de los comandos make para seguir la sintaxis de Linux. Por ejemplo, "$(MAKE)" debería reemplazarse por $(MAKE).

    En tercer lugar, debe verificar si el archivo file.mak está incluido en la ubicación correcta. Si no está incluido en la ubicación correcta, arrojará errores.

    Por último, debe asegurarse de que el valor de destino se asigne a los valores correctos en el archivo file.mak. Puede utilizar el comando export para establecer los valores.

    Para lograr esto, puede modificar el makefile de la siguiente manera:

    PROJECT=abc
    UNITS=$(BOXUNIT)/xyzcom
    EXEREF=/home/common/$(PROJECT)
    
    all: xyz
    xyz:
         export PLATFORM=LINUX64
         export CONFIG=Release
         export NAME=$(PROJECT)
         export EXT=
         $(MAKE) binary
    
    include ../../boxunit/file.mak
    

    Las modificaciones anteriores incluyen la configuración de los valores de destino en el makefile utilizando el comando export. Si tiene una ruta personalizada donde se encuentra el archivo file.mak, puede modificar el comando include para dirigirlo a la ruta correcta.

    Con estas modificaciones, debería poder ejecutar el makefile en Linux utilizando la automatización de Jenkins.

Comments are closed.