2017-07-08 4 views
0

私はset.cへのアクセス権がないset.hインターフェイスを使用してブラックボックステストを行っています。オブジェクトファイルset.oが提供されており、main.cファイルに複数のテストを書く必要があります。 set.oset.hmain.cを含むメークファイルを作成するにはどうすればよいですか?オブジェクトとヘッダファイルだけのためのmakeファイルを作成するには?

**私は唯一の完全なファイルを使用してこれを実行する方法を知っているので、私は混乱しているset.c

を使用して、それを再生成する必要はありませんので、私はすでにset.oファイルを持っています。あなたはすでにそれを使用し、そのためのルールを作成する必要はありませんset.oファイルを持っている場合は

は、ここに私のテンプレート

CC = clang 
CFLAGS = -g -Wall 

PROG = example 
HDRS = set.h 
SRCS = main.c 

OBJDIR = object 
OBJS = $(OBJDIR)/main.o $(OBJDIR)/set.o 

# compiling rules 

$(PROG): $(OBJS) $(OBJDIR) 
    $(CC) $(CFLAGS) $(OBJS) -o $(PROG) 

$(OBJDIR)/set.o: set.h $(HDRS) $(OBJDIR) 
    $(CC) $(CFLAGS) -c set.h -o $(OBJDIR)/set.o 

$(OBJDIR)/main.o: main.c $(HDRS) $(OBJDIR) 
    $(CC) $(CFLAGS) -c main.c -o $(OBJDIR)/main.o 

$(OBJDIR): 
    mkdir $(OBJDIR) 

clean: 
    rm -f $(PROG) $(OBJS) 
+0

リンク専用のコンパイラオプションを確認してください。 – Yunnosch

答えて

3

です。また、既にset.oがある場合、それはすでにオブジェクト/右にあるはずですので、mkdirを取り除いていますか?

CC = clang 
CFLAGS = -g -Wall 

PROG = example 
HDRS = set.h 
SRCS = main.c 

OBJDIR = object 
OBJS = $(OBJDIR)/main.o 

# compiling rules 

$(PROG): $(OBJS) 
    $(CC) $(CFLAGS) $(OBJS) $(OBJDIR)/set.o -o $(PROG) 

$(OBJDIR)/main.o: main.c $(HDRS) 
    $(CC) $(CFLAGS) -c main.c -o $(OBJDIR)/main.o 

clean: 
    rm -f $(PROG) $(OBJS) 
+0

私はこのエラー、 'Makefile:16:*** missing separator。停止してください。 – ekeith

+0

コピーして貼り付ける場合は、スペースではなくタブがあることを確認してください。ちょうどあなたがclangを使っていることを理解しました編集された答えを試してみてください。 – atomSmasher

+0

私はそれを実装しました。さて、私がmakeを使うと、 'clang -g -Wall -c main.c -o object/main.o'と書かれています。 set宣言はset.h – ekeith

関連する問題