C++ 프로그램을 빌드하고 실행하기 위한 bash 스크립트 만들기

C++ 프로그램을 빌드하고 실행하기 위한 bash 스크립트 만들기

하나의 명령으로 C++ 프로그램을 한 번에 빌드하고 실행하는 bash 스크립트를 만들려고 합니다. 일반적으로 지금은 해야 합니다.

g++ file.cc -o file
./file < input.in

나는 할 수 있고 싶다

brun file.cc < input.in

어떻게 해야 하나요? 지금 당장은 다음과 같이 실행할 수 있는 것이 있습니다.

brun file.cc '< input.in'

내 현재 스크립트는 다음과 같습니다.

#!/bin/bash

CFILE=$1
OBJFILE="${CFILE%.*}"

g++ $CFILE -o $OBJFILE
echo  "Built file: $CFILE -> $OBJFILE"
chmod +x $OBJFILE

ARGS="${@##*.cc}"
./$OBJFILE""$ARGS

마지막 줄에서 멈추면 아무것도 하지 않습니다. 여기서 나를 도와줄 사람이 있나요?

답변1

이것으로 충분합니다:

#!/bin/bash

CFILE=$1
OBJFILE="${CFILE%.*}"

g++ $CFILE -o $OBJFILE
echo  "Built file: $CFILE -> $OBJFILE"

./$OBJFILE

그리고 다음과 같이 호출할 수 있어야 합니다.

brun file.cc < input.in

이는 스크립트 의 STDIN으로 리디렉션된 입력이 brun단순히 버퍼링되고 해당 버퍼링된 입력을 먼저 읽는 하위 프로세스(이 경우 새로 빌드된 실행 파일)에서 사용할 수 있기 때문에 작동합니다.


make빌드를 자동화하는 데 사용하는 것을 고려할 수도 있습니다 . make명시적인 메이크파일 없이도 기본 규칙에 따라 빌드를 수행할 수 있을 만큼 똑똑합니다. 따라서 빌드/실행 스크립트는 다음과 같이 간단할 수 있습니다.

#!/bin/bash

OBJFILE="${1%.*}"
make "$OBJFILE" && ./$OBJFILE

여기서는 &&에서 발견된 빌드 오류가 없는 경우에만 OBJFILE이 실행되도록 합니다 make.

관련 정보