2011-12-15 21 views
0

私は以下のMakefileを持っていますが、なんらかの理由でファイルewapi.cに依存しています。このファイルはいくつかのSWIGコマンドを実行し、ewapi.iファイルを使用します。私はewapi.cのすべての内容をクリアし、Makefileは正常に実行されます。 ewapi.cファイルを削除すると、makeファイルは完成しません。それが役に立つなら、例外スタックは下にあります。 Makefileをewapi.cに依存しないように変更する方法に関するアイデアはありますか?CファイルのMakefile依存関係を削除するには

# BUILD_DIR and DIST_DIR are exported by build.xml 
# 
CMODE= 

SWIG = swig 
CC = $(PREFIX)gcc 
LD = $(CC) 

OBJ_DIR = $(BUILD_DIR)/obj 
AUTOGEN_DIR = $(BUILD_DIR)/auto-generated 
PACKAGE_DIR = $(AUTOGEN_DIR)/com/sample/jni 

PACKAGE = com.sample.jni 

INCLUDES = -I$(JAVA_INCLUDE) \ 
      -I$(SAMPLE_SDK_DIR)/include \ 
      -I$(JDK_HOME)/include 

LIB_INCLUDES = -L$(SAMPLE_SDK_DIR)/lib 

LIBS = /lib/libssl.so.4 \ 
     /lib/libcrypto.so.4 \ 
     -lSampleApi \ 
     -lm 

DIRS = $(PACKAGE_DIR) $(DIST_DIR) $(OBJ_DIR) $(AUTOGEN_DIR) 

CFLAGS = $(CMODE) -Wall -fpic $(INCLUDES) -O0 -g3 
SFLAGS = -java $(INCLUDES) -package $(PACKAGE) -outdir $(PACKAGE_DIR) 
LDFLAGS = -shared $(LIB_INCLUDES) $(LIBS) 

OBJECTS = $(OBJ_DIR)/ewapi_wrap.o $(OBJ_DIR)/ewapi.o 
TARGET = $(DIST_DIR)/libSample.so 

all: $(DIRS) $(TARGET) 

%_wrap.c: %.i 
    $(SWIG) $(SFLAGS) $< 

$(OBJ_DIR)/%.o: %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

$(TARGET): $(OBJECTS) 
    $(LD) $(OBJECTS) $(LDFLAGS) -o [email protected] 

$(DIRS): 
    mkdir -p [email protected] 

clean: 
    rm -rf $(TARGET) $(PACKAGE_DIR)/* $(TARGET) $(AUTOGEN_DIR) $(OBJ_DIR) 

例外スタック(私はewapi.cを削除):

[exec] rm ewapi_wrap.c 
[exec] make-3.79.1-p7: *** No rule to make target `/test/build/obj/ewapi.o', needed by `/test/dist/libSample.so'. Stop. 

答えて

1

OBJECTS$(OBJ_DIR)/ewapi.oを含み、マクロ。 $(TARGET)のルールはそれが$(OBJECTS)に依存していると言います。 allのルールは$(TARGET)に依存していると言います。したがって、ewapi.oを何かから作成する方法が必要です。ewapi.cがない場合、ewapi.oをビルドする方法はありません。そのため、あなたは苦情を受け取ります。

可能な修正:

  • ewapi.cを交換してください。
  • マクロ$(OBJECTS)からewapi.oを削除します。
+0

マクロ$(OBJECTS)からeawpi.oを削除すると、そのトリックが実行されました。ありがとうございました – c12

1

$(OBJ_DIR)/ewapi.oOBJECTSから削除します。

+0

ありがとう – c12

関連する問題