2009-06-02 5 views
6

소스 파일에 모든 소스 파일이 있습니다. Makefile은 Makefile 폴더에 있고 모든 오브젝트 파일을 Objects 폴더에 넣기를 원합니다. 그것은 C 프로젝트입니다. 이 세 폴더는 모두 Project 폴더에 있습니다.nmake Makefile로 별도의 디렉토리에 오브젝트 파일을 놓습니다.

프로젝트 폴더에는 다음이 포함

... 
SOURCE_DIR=..\Source 
OUTPUT_DIR=..\Objects 
.c.obj: 
    $(CC) $(SOURCE_DIR)\$*.c /Fo$(OUTPUT_DIR)\$*.obj 
... 

그러나이 : ​​ 소스 메이크 객체

소스 폴더에서 소스를 컴파일하는 메이크 파일을 얻을 수있는 방법을 알아 내려고 노력하고 스피, 내가 사용하는 시도 작동하지 않는, 내가 오류 메시지와 함께 말을하는 동안 myfile.obj을 만드는 방법을 모른다.

+0

makefile이 빌드해야하는 것을 지정하는 부분을 추가하십시오. – Bahbar

답변

0

을 말 그대로 don't know how to make myfile.obj을 말하고, 그리고 don't know how to make ..\Objects\myfile.obj 다음 문제는 다른 곳에있는 경우 - 메이크 뭔가를 현재 디렉토리에 오브젝트 파일을 요구하고있다.

빌드 할 때 myfile.obj가 필요한 규칙은 무엇입니까? 나는 그 규칙에서 당신이 의존성으로 $(OUTPUT_DIR)\myfile.obj을 지정하는 데 실패하고 있다고 생각합니다. Visual Studio를 사용하는 경우

0

때때로 오류 메시지가 얻을 :

"만드는 방법을 모른다 '를 .OBJ'"

내가 '메이크'를 열어이 문제를 해결 할 수 있었다 "Visual Studio 2010에서 32 비트 이진을 출력하기 위해 컴파일 할 때 주석 처리를 제거하십시오"라는 주석 아래의 주석을 제거하십시오. Visual Studio 버전과 아키텍처 (32 비트/64 비트)에 해당하는 주석을 찾아 그 밑에있는 주석을 제거하십시오!

0

목표를 추가하고 현재 디렉토리를 목표 파일을 만들 디렉토리로 변경해야합니다. nmake 샘플 Makefile 파일이옵니다. 샘플 nmake는 현재 디렉토리에서 a.c b.c를 컴파일하고 objs $ (OBJ_FILES_DIR) 디렉토리를 배치하고 $ (OUTDIR) 디렉토리에 SOME_STATIC.LIB를 빌드합니다.

# commmand to launch Makefile 
nmake OBJ_FILES_DIR=my_obj_dir OUTDIR=my_lib_dir 

# Makefile 
STATICLIB = SOME_STATIC.LIB 
OBJS = a.obj b.obj # objs in lib 
O = $(OBJ_FILES_DIR) 
S = $(MAKEDIR) # remember source dir where a.c b.c reside and current dir from which nmake launched. 

.PHONY: $(STATICLIB) 
.PHONY: CHDIR 

$(STATICLIB): CHDIR $(OUTDIR)$(STATICLIB) # 

CHDIR: 
    -md $(O) 
    cd $(O) 

all: $(STATICLIB) 

$(OUTDIR)$(STATICLIB): $(OBJS) 
    $(AR) $(ARFLAGS) -out:[email protected] $(OBJS) 

{$(S)}.c.obj:: 
    $(CC) $(WFLAGS) $(CFLAGS) -c $<