2010-05-22 2 views

답변

8

빌드 단계/복잡한 매개 변수의 수를 자동으로 설정하려면 makefile을 사용해야합니다. 당신이 메이크 파일이 있으면

당신은 단순히 입력해야합니다 make

+2

환경에서 'export CFLAGS = ...'를 사용하는 암시 적 규칙이 Jef Ty가 원하는 것과 정확히 일치 할 때 하드 코드 된 (및 손상된) Makefile을 제안하는 데 대해 아래로 설명합니다. (Scott Wales의 대답 참조). –

+0

@Matt B : makefile의 목적은 make를 입력하여 작동 할 수있는 가장 간단한 예제를 제공하면서 makefile의 개념을 소개하기 만 한 것입니다. 암시적인 규칙을 사용하지 않고. 나는 예제를 삭제했다. 그것은 OP가 오늘이 아니라면 그의 메이크 파일과 더 복잡한 무언가를하기를 원할 것입니다. –

3
alias gcc="gcc -ansi -pedantic -Wall" 

을하지만 @ 브라이언 말했듯이, 당신은 정말 CMake 또는 SCons 같은 메이크, 또는 더 나은, 빌드 시스템을 사용합니다.

+3

나는'gcc' 외에도 뭔가를 부르겠습니다. 그래서 내가 non-crazy-naggy 모드로 사용하고 싶다면 여전히'gcc'를 호출 할 수 있습니다. – nategoose

+0

@nategoose : 별칭을 호출하지 않고 "일반"gcc를 호출하려는 경우 별칭 대체를 방지하기 위해 \ gcc 명령 앞에 백 슬래시를 넣습니다. – dadinck

2

메이크 파일은 전통적인 방법, 특히 더 큰 빌드 프로세스의 일부로 사용됩니다.

메이크 파일을 사용하지 않고 자주 빌드하려면 .bashrc 또는 동등한 번호 인 alias gcc=gcc -ansi -pedantic -Wall에 별칭을 정의 할 수 있습니다.

9

또한 모든 프로그램에 대해 메이크 파일을 작성할 필요가 없도록 make의 암시 적 규칙을 사용할 수도 있습니다. make foo라고하고 현재 디렉토리에 foo.c 파일이있는 경우 Make는 자동으로 컴파일러를 호출합니다. 이 플래그를 추가하려면 사용자 환경에서 변수 CFLAGS을 정의하십시오. bash에서 export CFLAGS="-Wall -pedantic -ansi" ~ .bashrc을 추가하십시오.

그러나 프로그램이 여러 파일에 의존하는 경우 makefile을 만들어야하지만 C 컴파일의 경우 하나의 대상이 대상과 동일한 기본 이름을 가진 경우에만 종속성을 나열 할 수 있습니다. 이 메이크 예를 들어

:

# Makefile 
foo:foo.o bar.o 

make 당신은 어떤 규칙을 추가 할 필요없이 명령

gcc $CFLAGS -c -o foo.o foo.c 
gcc $CFLAGS -c -o bar.o bar.c 
gcc -o foo foo.o bar.o 

를 실행합니다 실행.

2

가끔 발생하는 일회용 빌드에 대해 CFLAGS을 적절하게 설정 한 후 make을 호출하고 호출하는 방법으로 몇 가지 신호를받는 셸 스크립트를 사용할 수 있습니다.

/usr/bin/compile이 있는데 실제로 $0을보고 어떤 이름이 실제로 호출되었는지 보는 쉘 스크립트입니다. foo는 컴파일하려면 다음

OLDCFLAGS=$CFLAGS 
WHATAMI=$(basename $0) 

case "$WHATAMI" in 
    pedantic) 
     export CFLAGS="-Wall -pedantic -ansi" 
     make [email protected] 
     exit $? 
    ;; 
    c99) 
     export CFLAGS="-std=c99 ... ... ..." 
     .... 

: 당신은 다음 쉘 스크립트 자체에서 pedantic, fullwarn

이름에 심볼릭 링크, 같은 것을 확인하십시오.여분의 naggy 플래그 C :

pedantic foo

나는 누군가가 질문을 게시하는 것이 코드를 컴파일하려고하거나 새 라이브러리를 사용하는 방법을 작동, 일회성 빌드에 대한 예를 말했듯이, 편리합니다 등등.

다른 말로, 메이크 파일을 사용하십시오.

관련 문제