gnu make에서 $$@ 와 같은 기능이 있나요?

sekim의 이미지

make 에서는 $$@가 사용 가능한데 gnu make에서는 에러가 발생하네요.

다음과 같이 Makefile을 구성해서 사용중이었는데 linux에서 사용하려니 에러가 발생합니다.

PROGRAM = test1 test2 test3

$(PROGRAM) : $$@.o
$(CC) -o $@ $?

gnu make에서 대체 가능한 macro는 없습니까?

gnu make manual을 뒤져보니 .SECONDEXPANSION: 이라는게 있더군요.

문제는 3.81 이상 버전에서만 작동하는것 같습니다.

3.79 버전에서 추가하고 해봤더니 여전히 에러가 생깁니다.

gnu make update 이외에는 방법이 없을까요?

kewlbear의 이미지

어느 make에서 지원하는 것인지 모르겠지만 $$@라는 것이 어떤 역할을 하는 것인지 알려주셔야죠.

sekim의 이미지

다음과 같이 있네요.

$$@ The name of the current target.Can be used onlyu to the right of the colon in dependency lines.

위의 Makefile을 이용해서 make test1 하였을경우 다음과 같이 대체된다고 봅니다.

test1 : test1.o
gcc -o test1 test1.o

즉 다음과 같은 Makefile이

test1 : test1.o
gcc -o test1 test1.o

test2 : test2.o
gcc -o test3 test3.o

test3 : test3.o
gcc -o test3 test3.o

다음과 같이 간단히 할수 있는 기능을 합니다.

PROGRAM = test1 test2 test3

$(PROGRAM) : $$@.o
$(CC) -o $@ $?

프로그램 목록이 많아지면 훨씬 편하겠죠.. PROGRAM에 program명만 넣으면 되니까요. ^^
사용 make는 AIX make 였습니다.