【问题标题】:Adding a compiler flag to only one file in Android.mk在 Android.mk 中仅向一个文件添加编译器标志
【发布时间】:2014-11-11 18:00:21
【问题描述】:

我有一个 Android.mk 文件,其中包含许多应用 LOCAL_CFLAGS 的文件。我想对众多文件中的一个应用不同的标志。这如何实现?

我从 Android 的角度搜索了互联网,但没有找到很多。考虑到以下示例,我只想将标志 TEST3 应用于文件 test3.c。我查看了Per-file CPPFLAGS in Android.mk,但我找不到任何关于如何将PRIVATE_CPPFLAGS 用于一个文件的内容。有什么想法吗?

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

include $(BUILD_SHARED_LIBRARY)

【问题讨论】:

  • 好的,所以该链接确实指示了如何使用 PRIVATE_CPPFLAGS,但是当我尝试使用 LOCAL_CPPFLAGS 时,我得到:在调用 local-intermediates-dir 之前未定义 LOCAL_MODULE_CLASS。停止。有什么想法吗?
  • 如果TAG名称不同,则可以在特定文件中使用特定的,但对其他文件没有任何影响。做这样的私有标志机制意义不大。更复杂,收益更少。

标签: android android-ndk java-native-interface android.mk


【解决方案1】:

支持实现目标的方法是为需要不同参数的 C/CPP 文件使用单独的静态库。在这种特殊情况下,修复就像

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)  

LOCAL_MODULE := test3
LOCAL_SRC_FILES := test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3 -DTEST3
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c
LOCAL_CFLAGS := -DTEST1_2_AND_3
LOCAL_WHOLE_STATIC_LIBRARIES := test3

include $(BUILD_SHARED_LIBRARY)

还有另一种方法,类似于我forged a while ago

LOCAL_PATH := $(call my-dir)

TARGET-process-src-files-tags += $(call add-src-files-target-cflags, $(LOCAL_TEST3_SRC_FILES), $(LOCAL_TEST3_CFLAGS))

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

LOCAL_TEST3_SRC_FILES := test3.c
LOCAL_TEST3_CFLAGS := -DTEST3

include $(BUILD_SHARED_LIBRARY)

如果 -Dtest3 可以,您可以使用另一个 hack:

LOCAL_PATH := $(call my-dir)

get-src-file-target-cflags = $(LOCAL_SRC_FILES_TARGET_CFLAGS.$1) -D$(basename $1)_DEFINE

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

include $(BUILD_SHARED_LIBRARY)

How to dynamically get the current compiler target file name in Android.mk's LOCAL_CFLAGS? 中查看更多信息。

【讨论】:

  • 谢谢。我需要一点时间来测试这些方法。
猜你喜欢
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 2022-07-14
  • 2014-08-05
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多