나는 라이브러리에 대한 몇 가지 간단한 테스트를 시작했다. 나는 현재 모두를 컴파일하기로되어있는 btests
이라는 대상을 작성하려고합니다.수정하지 않고 재구성하기
테스트는 디렉토리에 .cpp
개의 파일로 구성되며 라이브러리는 #include
입니다.
makefile의 작업은 간단합니다. 각각의 tests/name.cpp
을 라이브러리와 링크 된 실행 파일 tests/name
으로 컴파일하십시오.
그리고 한 가지를 제외하고는 제대로 작동합니다. make btests
을 실행할 때마다 테스트가 다시 컴파일됩니다. 그러나 라이브러리가 변경되거나 라이브러리 자체가 변경된 경우에만 다시 컴파일해야합니다. 뭔가가 변경된 경우에만 다시 컴파일 할 수 있도록 강제 할 방법
CC=g++
CFLAGS=-Wall
SRCPATH=source
OBJPATH=object
TESTPATH=tests
OBJ=$(OBJPATH)/nameb.o $(OBJPATH)/hebbann.o
INF=$(SRCPATH)/nameb.hpp $(SRCPATH)/hebbann.hpp
TESTS=$(TESTPATH)/test_api $(TESTPATH)/test_speed
all : libname.a
libname.a : $(OBJ)
ar rvs libname.a $(OBJ)
$(OBJ) : $(OBJPATH)/%.o : $(SRCPATH)/%.cpp $(SRCPATH)/%.hpp
$(CC) $(CFLAGS) -c $< -o [email protected]
btests : $(TESTS)
$(TESTS) : % : %.cpp all
$(CC) $(CFLAGS) $< -L. -lname -o [email protected]
install : all
mkdir -p /usr/include/name
cp $(INF) /usr/include/name
cp libname.a /usr/lib
pack : all
mkdir -p name/
cp $(INF) name/
tar -cvf libname.tar name/ libname.a doc/ source/
clean :
rm -f $(OBJPATH)/* libname.a libname.tar $(TESTS)
:
이 관련 코드는?
그건 - 그것은 정말 당신이 사용하고있는 하나? –
이 문제는 재현 할 수 없습니다. 이 파일이 여러분이 사용하고있는 makefile이고, 여러 파일의 마지막으로 수정 한 시간을 망쳐 놓을 수있는 다른 것이 없다고 확신합니까? –
글쎄, 나에게 무관 심한 부분을 잘라 냈지만, 그렇지 않은 것 같아. 전체 메이크 파일을 추가하겠습니다. – corazza