如何在Android.mk的LOCAL_CFLAGS中动态获取当前编译器目标文件名?

我目前正在尝试使用Android的NDK构建本机模块。 我的项目包含几个源文件(例如: FILENAME .c),对于每个源文件,我需要在其CFLAGS( -DOPERATION_FILENAME )中声明一个定义。

为此,我需要动态获取Android NDK交叉编译器的当前目标文件的名称,并将其用于定义值。

我找不到任何有关如何执行此操作的信息,并且Makefile方式( CFLAGS + = -DOPERATION_ echo $* | sed 's/_$$//' )不适用于此处。

我目前的Android.mk看起来像这样:

 LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := libmpn LOCAL_SRC_FILES := \  LOCAL_CFLAGS := \ -std=gnu99 \ -DHAVE_CONFIG_H \ -D__GMP_WITHIN_GMP \ -O2 \ -pedantic \ -fomit-frame-pointer \ -mfloat-abi=softfp \ -DOPERATION_`echo $* | sed 's/_$$//'` include $(BUILD_SHARED_LIBRARY) 

有谁知道在Android.mk中获取当前交叉编译器目标的文件名的工作方式? 谢谢!

Android.mk的开头,添加重新定义get-src-file-target-cflags的行 ,如下所示:

 get-src-file-target-cflags = $(LOCAL_SRC_FILES_TARGET_CFLAGS.$1) -DOPERATION_$(basename $1) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := t.cpp qq.c LOCAL_MODULE := tm LOCAL_LDLIBS := -latomic include $(BUILD_SHARED_LIBRARY) 

如果您愿意,可以将此行放在Application.mk中