make
은 추적 헤더가 변경된 디렉토리의 .cpp
을 모두 빌드하려고합니다. 그러나 어떻게 든이 스크립트 형태GNU 예기치 않은 동작이 발생합니다.
OPTIONS = -std=c++11 -Wall
export
all : $(patsubst %.cpp, %.o, $(wildcard *.cpp))
%.o : %.mkt
make -f $*.mkt
%.mkt : %.cpp
gcc $(OPTIONS) -MM $*.cpp > $&.mkt1
echo gcc $(OPTIONS) -c %.cpp > $*.mkt2
cat $*.mkt1 $*.mkt2 > $*.mkt
: 내가 먼저 -MM
옵션으로 의존성 GCC 출력에게 대상을함으로써 그것을하고 실제로 컴파일을 호출하는 대상에 대한 신체를 추가하려고 시도
g++ -c -o something.o something.cpp
각 .cpp
디렉토리의 파일. 임시 파일 .mkt1
, .mkt2
및 .mkt
은 생성되지 않습니다. 왜 이런 일이 생길까요? 원하는 행동을 어떻게 달성합니까? 나는 mingw와 함께 창문에서 이것을하고있다. 방법을 검색 할 때, 먼저 발견 할 것이다 - (>%.o
%.cpp
)가 이미 하나의 묵시적 규칙이 있지만, 확인
'patsubst' 호출에서 쉼표 뒤에 공백을 제거하는 것이 도움이됩니까? – tripleee
어쨌든'mkt' 파일을 Makefile로 사용하려는 경우 들여 쓰기 용 탭이 없어야합니까? – tripleee
@ 삼자가 공백을 제거해도 아무 효과가 없습니다. '.mkt' 파일은 참으로 나쁘지 만 탭이 있어야합니다. 그러나 여기에도 생성되지 않았습니다. –