자동 전환 : 나는 '자동'수 있는지 궁금하네요-ansi -pedantic -Wall 컴파일 우리는 이러한 방식으로 GCC를 사용하여 C 소스 코드를 컴파일하는 데 필요한 GCC
gcc -ansi -pedantic -Wall program.c
이 너무 때 다음을 입력하십시오 :
gcc program.c
자동으로 3 개의 스위치로 컴파일됩니다. 이것이 가능한가?
자동 전환 : 나는 '자동'수 있는지 궁금하네요-ansi -pedantic -Wall 컴파일 우리는 이러한 방식으로 GCC를 사용하여 C 소스 코드를 컴파일하는 데 필요한 GCC
gcc -ansi -pedantic -Wall program.c
이 너무 때 다음을 입력하십시오 :
gcc program.c
자동으로 3 개의 스위치로 컴파일됩니다. 이것이 가능한가?
빌드 단계/복잡한 매개 변수의 수를 자동으로 설정하려면 makefile을 사용해야합니다. 당신이 메이크 파일이 있으면
당신은 단순히 입력해야합니다 make
메이크 파일은 전통적인 방법, 특히 더 큰 빌드 프로세스의 일부로 사용됩니다.
메이크 파일을 사용하지 않고 자주 빌드하려면 .bashrc
또는 동등한 번호 인 alias gcc=gcc -ansi -pedantic -Wall
에 별칭을 정의 할 수 있습니다.
또한 모든 프로그램에 대해 메이크 파일을 작성할 필요가 없도록 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
를 실행합니다 실행.
가끔 발생하는 일회용 빌드에 대해 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
나는 누군가가 질문을 게시하는 것이 코드를 컴파일하려고하거나 새 라이브러리를 사용하는 방법을 작동, 일회성 빌드에 대한 예를 말했듯이, 편리합니다 등등.
다른 말로, 메이크 파일을 사용하십시오.
환경에서 'export CFLAGS = ...'를 사용하는 암시 적 규칙이 Jef Ty가 원하는 것과 정확히 일치 할 때 하드 코드 된 (및 손상된) Makefile을 제안하는 데 대해 아래로 설명합니다. (Scott Wales의 대답 참조). –
@Matt B : makefile의 목적은 make를 입력하여 작동 할 수있는 가장 간단한 예제를 제공하면서 makefile의 개념을 소개하기 만 한 것입니다. 암시적인 규칙을 사용하지 않고. 나는 예제를 삭제했다. 그것은 OP가 오늘이 아니라면 그의 메이크 파일과 더 복잡한 무언가를하기를 원할 것입니다. –