我可以在 debian 规则 make 文件中定义函数和全局变量吗?

我可以在 debian 规则 make 文件中定义函数和全局变量吗?

我可以在 debian rulesmake 文件中定义函数和全局变量,以便在不同部分中使用吗override_****

这样做还没有成功。

例如,以下是我的脚本文件之一的摘录。我也想在我的 debian 规则文件中的整个覆盖部分中使用这个函数和全局变量。

# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
BLUE='\033[1;34m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'

#return code
rc=999

######################### Functions #############################
function logCommandExecution()
{
    commandName=$1
    exitCode=$2
    #echo 'command name: '${commandName}' exitCode: '${exitCode}
    if [ ${exitCode} -eq 0 ] 
    then
        printf "${GREEN}${commandName}' completed successfully${NC}\n"
    else 
        printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
        exit ${exitCode}
    fi
}

答案1

debian/rules文件是 makefile,而不是 sh 文件。

我将你的函数放入 makefile 中来尝试一下:

#!/usr/bin/make -f

# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'

######################### Functions #############################
function logCommandExecution()
{
    commandName=$1
    exitCode=$2
    #echo 'command name: '${commandName}' exitCode: '${exitCode}
    if [ ${exitCode} -eq 0 ] 
    then
        printf "${GREEN}${commandName}' completed successfully${NC}\n"
    else 
        printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
        exit ${exitCode}
    fi
}


all:
        logCommandExecution Passcmd 0
        logCommandExecution Failcmd 1

然后,当我尝试执行此操作时,我得到:

$ make all
makefile:14: *** missing separator.  Stop.

所以答案不是直接的。然而,有一些方法可以在 makefile 中运行 shell 语法。
这个答案可能会有所帮助。

我认为最简单的方法是将函数放在另一个文件中,然后从以下位置调用它debian/rules

生成文件:

#!/usr/bin/make -f
all:
        ./logCommandExecution Passcmd 0
        ./logCommandExecution Failcmd 1

日志命令执行:

#!/bin/sh

# console output colors
NC='\033[0m' # No Color
RED='\033[1;31m'
GREEN='\033[1;32m'

commandName=$1
exitCode=$2
#echo 'command name: '${commandName}' exitCode: '${exitCode}
if [ ${exitCode} -eq 0 ] 
then
    printf "${GREEN}${commandName}' completed successfully${NC}\n"
else 
    printf "${RED}${commandName} failed with error code [${exitCode}]${NC}\n"
    exit ${exitCode}
fi

现在,当我成功时,我得到:

$ make
./logCommandExecution Passcmd 0
Passcmd' completed successfully
./logCommandExecution Failcmd 1
Failcmd failed with error code [1]
make: *** [makefile:5: all] Error 1

相关内容