다른 Makefile에서 Makefile을 호출하는 방법?
하나의 makefile을 다른 것으로 호출하는 예기치 않은 결과가 나타납니다. 두 개의 메이크 파일이 있는데 하나는 호출 /path/to/project/makefile
되고 다른 하나는 호출 /path/to/project/gtest-1.4.0/make/Makefile
됩니다. 나는 전자를 후자로 부르려고합니다. / path / to / project / makefile에는
dev: $(OBJ_FILES)
$(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT)
$(MAKE) -f ./gtest-1.4.0/make/Makefile
clean:
rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o
rm -f ../svn-commit.tmp~
rm -f $(BIN_DIR)/$(PROJECT)
make -f gtest-1.4.0/make/Makefile clean
그리고 /path/to/project/gtest-1.4.0/make/Makefile
나는
all: $(TESTS)
clean:
rm -f $(TESTS) gtest.a gtest_main.a *.o
다음을 발행 :
cd /path/to/project
make
출력 :
make -f ./gtest-1.4.0/make/Makefile
make[1]: Entering directory `/path/to/project'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/path/to/project'
그러나이 명령을 실행할 때 :
cd /path/to/project
make clean
내가 참조:
make -f gtest-1.4.0/make/Makefile clean
make[1]: Entering directory `/path/to/project'
rm -f gtest.a gtest_main.a *.o
make[1]: Leaving directory `/path/to/project'
이해가 안됩니다 : 두 경우 모두 /path/to/project/makefile
현재 작업 디렉토리에 들어가고 있다고 알려줍니다. 첫 번째 경우에는 할 일이 없다고 생각하고 두 번째 경우에는 적절한 지시문을 찾을 수 있습니다 (출력이 잘못된 디렉토리를보고 있다고 말할 때). rm
에서 /path/to/project
대신 명령 을 실행합니다 /path/to/makefile/gtest-1.4.0/make/
.
서로 makefile을 호출하는 데 근본적인 것이 빠져 있습니까? 심각한 개념의 실수를 저 지르거나 일반적인 함정을 겪었습니까? 디렉토리를 효과적으로 변경하고 첫 번째 파일에서 두 번째 makefile을 어떻게 호출합니까? 이해는 단순히 부르는 make -f <name>
것으로 충분 하다는 것이 었 습니다.
이것은 bash의 make / gmake 3.81입니다.
나는 당신이 요구하는 것을 너무 명확하지 않지만 -f
명령 줄 옵션을 사용하면 파일을 지정하기 만합니다-디렉토리를 변경하라는 make를 지시하지 않습니다. 다른 디렉토리에서 작업을 수행하려면 디렉토리로 이동해야합니다 cd
.
clean:
cd gtest-1.4.0 && $(MAKE) clean
각 줄은 Makefile
별도의 셸 에서 실행되므로 디렉토리를 다시 변경할 필요가 없습니다.
대신의 -f
의 make
당신이 사용할 수있는 -C <path>
옵션을 선택합니다. 먼저 경로를 ' <path>
' 로 변경 한 다음 호출 make
합니다.
예:
clean:
rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o
rm -f ../svn-commit.tmp~
rm -f $(BIN_DIR)/$(PROJECT)
$(MAKE) -C gtest-1.4.0/make clean
http://www.gnu.org/software/make/manual/make.html#Recursion
subsystem:
cd subdir && $(MAKE)
또는 이와 동등하게 :
subsystem:
$(MAKE) -C subdir
$(TESTS)
비어있는 것처럼 보이므로 1.4.0 makefile이 효과적으로
all:
clean:
rm -f gtest.a gtest_main.a *.o
실제로 모든 것은 할 일이 없습니다. 깨끗하게 말하는대로rm -f gtest.a ...
참고 URL : https://stackoverflow.com/questions/2206128/how-to-call-makefile-from-another-makefile
'Programming' 카테고리의 다른 글
iPhone 앱의 Facebook 액세스 토큰 서버 측 유효성 검사 (0) | 2020.07.28 |
---|---|
PHP로 작성된 코드 속도를 어떻게 측정 할 수 있습니까? (0) | 2020.07.28 |
Tensorflow Strides 인수 (0) | 2020.07.28 |
오류 : 리소스 android : attr / fontVariationSettings를 찾을 수 없습니다 (0) | 2020.07.28 |
CSS에서 자녀가 부모의 곡선 테두리를 준수하도록 강제 (0) | 2020.07.27 |