rules
다른 섹션에서 사용하기 위해 debian make 파일에 함수와 전역 변수를 정의 할 수 있나요 override_****
?
이것은 성공하지 못했습니다.
예를 들어, 아래는 내 스크립트 파일 중 하나에서 발췌한 것입니다. 또한 데비안 규칙 파일의 적용 범위 섹션 전반에 걸쳐 이 함수와 전역 변수를 사용하고 싶습니다.
# 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
파일은 sh 파일이 아닌 make 파일입니다.
나는 그것을 시험해 보기 위해 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에서 셸 구문을 실행하는 방법이 있습니다.
이 답변도움이 될 수도 있습니다.
가장 쉬운 방법은 함수를 다른 파일에 넣고 다음에서 호출하는 것입니다 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