다음 프로젝트 구조에 대한 Makefile을 작성하려고합니다.
/project
Makefile
main.cpp
test.hpp
/a
s1.cpp
s1.hpp
s2.cpp
s2.hpp
/b
s1.cpp
s1.hpp
s2.cpp
s2.hpp
/c
s1.cpp
s1.hpp
s2.cpp
s2.hpp
.cpp 및 .hpp 파일이있는 3 개의 폴더가 있습니다. INC 변수에 모든 hpp 파일을 함께 넣고 싶습니다.
DIRS = ./a ./b ./c
INC = $(wildcard *.hpp) # how to have here ./a/s1.hpp ./a/s2.hpp ./b/s1.hpp ./b/s2.hpp etc...?
INC는 하위 디렉터리가 아닌 Makefile 디렉터리의 .hpp 파일 만 가져옵니다. 하위 디렉토리의 모든 헤더를 자동으로 지정하는 방법은 무엇입니까? 팁 주셔서 감사합니다.
이 wildcard
함수는 여러 패턴을 사용합니다. 이 addsuffix
함수는 목록의 각 단어에 접미사를 추가합니다. 그래서:
INC = $(wildcard $(addsuffix /*.hpp,$(DIRS)))
당신이 원하는 것을해야합니다. 다음과 같은 다른 방법이 있습니다.
INC = $(foreach d,$(DIRS),$(wildcard $(d)/*.hpp))
또는 find
유틸리티가 있고 모든 *.hpp
파일을 원하는 깊이의 하위 디렉토리 (에서뿐만 아니라)에서 찾으려면 다음을 수행하십시오 $(DIRS)
.
INC = $(shell find . -type f -name '*.hpp')
이 마지막 양식은 디렉토리 목록을 제공 할 필요가 없기 때문에 더 좋을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다