필자가 호출 할 때마다 라이브러리와 실행 파일을 다시 링크하는 것처럼 보이는 복잡한 makefile이 있습니다. 나는 간단한 메이크에 문제를 좁힐 수 있었다 :.PHONY가이 상황에서 작동하지 않는 이유는 무엇입니까?
어떤 이유1: all: prog
2:
3: .PHONY: prog
4: prog: prog.exe
5:
6: prog.exe: lib prog.o
7: touch prog.exe
8:
9: prog.o: prog.c
10: touch prog.o
11:
12: .PHONY: lib
13: lib: lib.so
14:
15: lib.so: lib.o
16: touch lib.so
17:
18: lib.o: lib.c
19: touch lib.o
20:
21: .PHONY: clean
22: clean:
23: rm *.so *.o *.exe
,이 예 prog.exe이 때마다 생성됩니다. 6 행의 lib를 lib.so로 바꾸면 작동합니다. 그러나 내가 여기서 시도하고있는 것을 할 수 있어야하는 것처럼 보인다. 내가 누락 된 근본적인 것이 있습니까? 온라인 GNU 수 있도록 매뉴얼에서
나는 그들이 당신을 그렇게하기를 바란다. 내 makefile을 사용하면 "고객"이 lib * .so없이 다른 라이브러리에 대한 종속성을 지정할 수 있습니다. 따라서 MyLib1과 MyLib2에 의존하는 MyProg라는 exe를 갖고 있다면 "LIB_FILES : = MyLib1 MyLib2"보다는 "LIB_FILES : = /libMyLib1.so /libMyLib2.so"라고 말하면됩니다. 나는 이것이 작동 할 수 있도록 libs의 실제 이름과 위치를 저장해야한다고 생각한다. 응답 주셔서 감사합니다! –
user545226
"답변을 수락하는 방법"은 무엇입니까? 또한, 위쪽 화살표를 클릭하려고했지만 15 개의 평판이 필요하다고 말합니다. 나는 이곳에서 새로운 사람이기 때문에 나는이 사이트에서 평판이 좋지 않은 사람이라고 생각한다. : – user545226
upvote 일에 관해서는, 당신이 질문을 upvoting 같은 더 많은 일을 할 수있을거야 더 많은 평판 포인트를 얻을. 나는 자주 묻는 질문을 읽는 것이 좋습니다 (모든 페이지 상단에 링크가 있습니다) –