2017-05-17 4 views
0

나는 GNU make 파일을 작성하여 C++ 단위 테스트를 만들고 실행합니다. 나는 메이크 파일을 가지고있는 같은 디렉토리에 .o 파일을 넣었다.메이크 파일 타겟을 평가하는 데 사용되는 디렉토리를 지정하는 방법은 무엇입니까?

우리는 배달을 위해 제품을 빌드하는 데 사용되는 다른 메이크 파일 세트가 있습니다. 이러한 메이크 파일은 각 .o 파일을 해당 C++ 소스 파일이있는 동일한 디렉토리에 저장합니다.

내 단위 테스트 메이크 파일은 .o 타겟을 "% .o : % .cpp"로 정의합니다. Makefile에서 VPATH를 정의하여 .cpp 파일의 위치를 ​​지정합니다. 또한 단위 테스트 컴파일 명령은 g ++ MMD 및 MP 옵션을 사용하여 .d 파일을 생성하고 사용합니다.

그래서 여기에 내가 가지고있는 문제가 있습니다.

내 단위 테스트 makefile 디렉토리를보고 내 단위 테스트 makefile 대상이 .o 대상만을 평가하도록하고 싶습니다.

소스 제공 파일이있는 곳에 제품 배달 메이크 파일이 이미 생성 된 경우 .o 파일을 다시 작성해야 하는지를 결정하기 위해 메이크 파일의 디렉토리를 고려해야합니다.

그러나 그런 일은 일어나지 않습니다. 제품 제공 메이크 파일이 이미 소스 코드가있는 곳에 .o를 넣었다면, 유닛 테스트 메이크 파일은 .o를보고, .o를 빌드 할 필요가 없다고 말합니다.

.o 파일 타겟을 평가할 때 단위 테스트 makefile이 단위 테스트 파일 디렉토리만을 고려하도록 할 수있는 방법이 있습니까?

답변

1

을 통해 .o 파일을 찾았습니까? 당신은 특정 유형의 파일에 조회를 제한하는 패턴 별 vpath 사용할 수 있습니다

:

vpath %.cpp $(SRCDIR) 

대신 글로벌 VPATH

+0

예를 설정! 그게 내가 필요한 것입니다. 감사! – KenK