如何在Android.mk的LOCAL_CFLAGS中动态获取当前编译目标文件名?
How to dynamically get the current compiler target file name in Android.mk's LOCAL_CFLAGS?
我目前正在尝试使用 Android 的 NDK 构建本机模块。我的项目包含几个源文件(例如:FILENAME.c),对于每个源文件,我需要在它们的 CFLAGS 中声明一个定义(-DOPERATION_FILENAME).
为此,我需要动态获取 Android NDK 交叉编译器的当前目标文件的名称,并将其用于定义值。
我找不到有关如何执行此操作的任何信息,并且 Makefile 方式 (CFLAGS += -DOPERATION_echo $* | sed 's/_$$//'
) 在此处 apply/work .
我现在的 Android.mk 是这样的:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := libmpn
LOCAL_SRC_FILES := \
<cut>
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.) -DOPERATION_$(basename )
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 中。
我目前正在尝试使用 Android 的 NDK 构建本机模块。我的项目包含几个源文件(例如:FILENAME.c),对于每个源文件,我需要在它们的 CFLAGS 中声明一个定义(-DOPERATION_FILENAME).
为此,我需要动态获取 Android NDK 交叉编译器的当前目标文件的名称,并将其用于定义值。
我找不到有关如何执行此操作的任何信息,并且 Makefile 方式 (CFLAGS += -DOPERATION_echo $* | sed 's/_$$//'
) 在此处 apply/work .
我现在的 Android.mk 是这样的:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := libmpn
LOCAL_SRC_FILES := \
<cut>
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.) -DOPERATION_$(basename )
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 中。