2014-09-25 2 views
1

리눅스에서 Windows C++ 프로젝트를 빌드하기 위해 makefile을 만들려고합니다. 다른 디렉토리에서 .cpp 파일을 컴파일하여 개체와 함께 .so 파일을 만들어야합니다. ($ OBJECT를 : 나는 내가 $ (TARGET)을 변경해야합니다 알고 (: 같은하나의 .o 파일과 하나의 .CPP 파일을 가진 C++ 용 Makefile

SOURCE= \ 
./Source/CHAINE.CPP\ 
./Source/CRACKCHN.CPP\ 
./Source/LISTEPTR.CPP\ 

이제 내 메이크 같습니다 이를 위해 나는 .CPP을 찾아 파일에 넣어하는 스크립트를 만들었습니다)) 규칙,하지만 그게 전부는 아니 여기 내 문제는 내가)

-include sources.mk 
OBJECT = $(SOURCE:%.CPP=%.o) 
# 
$(TARGET) : $(OBJECT) 
     $(CC) $(CFLAGS) -o [email protected] $^ $(LIBS) 

$(OBJECT) : $(SOURCE) 
     $(CC) $(CFLAG) $(PREPROC) -c $< -o $(OBJ_DIR)/[email protected] $(INCLUDE) 

생각하지만 make 명령을 수행 할 때, 모든 객체는 여기에 최초의 .CPP (CHAINE.CPP로 만들어집니다

g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/CHAINE.o 
=== 
g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/CRACKCHN.o 
=== 
g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/LISTEPTR.o 

이것은 전나무 나는 메이크 파일을 만들어야 만한다. 누군가 해결할 수 있다면 많은 문제를 해결해야한다.

+0

당신은 하나의 소스 파일에서 모든 오브젝트 파일을 만들고 싶다는 것을 명시 적으로 밝히지 않고'.cpp.o :'규칙을 원합니다. –

+0

크로스 플랫폼 프로젝트를 위해 [CMake] (http://www.cmake.org/)를보십시오. – yegorich

답변

2

$ (OBJECT)는 모든 개체의 목록입니다. 마지막 규칙을 사용하면 단일 .cpp에서 단일 .o를 작성하는 방법을 알려줍니다.

%.o: %.cpp 
    $(CC) $(CFLAG) $(PREPROC) -c $< -o $(OBJ_DIR)/[email protected] $(INCLUDE) 
+0

그것은 작동합니다! 고마워요. 나는 그것을 시험해 보았습니다. :) – johan

관련 문제