私は以下の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.
マクロ$(OBJECTS)からeawpi.oを削除すると、そのトリックが実行されました。ありがとうございました – c12