2009-06-02 37 views
6

ソースファイルにすべてのソースファイルがあります。メークファイルはMakefileフォルダにあり、すべてのオブジェクトファイルをObjectsフォルダに入れたいと思います。それは私が働いているCプロジェクトです。これらの3つのフォルダはすべてProjectという名前のフォルダにあります。nmakeオブジェクトファイルを別のディレクトリに置くMakefile

Projectフォルダが含まれています

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

が、この: ソース Makefileの オブジェクト

ソースフォルダからソースをコンパイルするメイクファイルを取得する方法を把握しようとしているIAM、私が使って試してみましたは動作していませんが、私はエラーメッセージで終わるのですが、myfile.objを作成する方法はわかりません。

+0

メイクファイルを作成する部分を追加してください。 – Bahbar

答えて

0

を、文字通りあなたの問題は別の場所で、その後don't know how to make ..\Objects\myfile.objdon't know how to make myfile.objを言って、とされていない場合 - メイクファイルで何かが現在のディレクトリ内のオブジェクトファイルを求めています。

ビルドにmyfile.objが必要なルールは何ですか?そのルールでは、依存関係として$(OUTPUT_DIR)\myfile.objを指定していないと思います。

0

Visual Studioを使用している場合は、ときどきエラーメッセージが表示されます:

「にする方法がわからない 『.objファイル』」

私は 『メイクファイル』を開くことによって、この問題を解決することができました「32ビットバイナリを出力するためにVisual Studio 2010でコンパイルするときにこれらのコメントを外してください」というコメントの下の行のコメントを外します。 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 $< 
関連する問題