Компилятор Android соблюдает -Wall? - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь построить общий объект по следующему рецепту в нашем Android.mk.Общий объект основан на библиотеке C ++.

include $(CLEAR_VARS)
LOCAL_MODULE := cryptopp_shared
LOCAL_SRC_FILES := $(addprefix $(CRYPTOPP_PATH),$(CRYPTOPP_SRC_FILES))
LOCAL_CPP_FLAGS := -Wall
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_LDFLAGS := -Wl,--exclude-libs,ALL -Wl,--as-needed

LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/..

LOCAL_STATIC_LIBRARIES := cpufeatures

include $(BUILD_SHARED_LIBRARY)

Библиотека в основном строится нормально.Некоторые параметры не , такие как -Wall.Другие параметры, такие как -Wl,--exclude-libs,ALL, учитываются.

Документы для Android.mk находятся здесь , но в нем не рассматриваются параметры удаления или фильтрации.

Почему Androidсистема сборки не соблюдает все наши флаги?


Вот команда сборки, которую мы использовали.Я строю из корневого каталога библиотеки:

ndk-build V=1 APP_ABI=armeabi-v7a NDK_PROJECT_PATH="$PWD" \
    NDK_APPLICATION_MK="$PWD/Application.mk"

Странно то, что все наши исходные файлы - C ++, и ни один из исходных файлов не был построен с -Wall.Тем не менее, мы импортируем библиотеку cpufeatures для Android, это один исходный файл C, и он был собран с -Wall:

/opt/android-ndk-r16b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -MMD -MP -
MF /home/cryptopp/obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o.d -gcc-t
oolchain /opt/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/lin
ux-x86_64 -fpic -ffunction-sections -funwind-tables -fstack-protector-strong -Wn
o-invalid-command-line-argument -Wno-unused-command-line-argument -no-canonical-
prefixes -fno-integrated-as -g -target armv7-none-linux-androideabi18 -march=arm
v7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Os -DNDEBUG  -I/opt/android-ndk
-r16b/sources/android/cpufeatures   -DANDROID -Wall -Wextra -Werror -D__ANDROID_
API__=18 -Wa,--noexecstack -Wformat -Werror=format-security  --sysroot /opt/andr
oid-ndk-r16b/sysroot -isystem /opt/android-ndk-r16b/sysroot/usr/include/arm-linu
x-androideabi -c  /opt/android-ndk-r16b/sources/android/cpufeatures/cpu-features
.c -o /home/cryptopp/obj/local/armeabi-v7a/objs/cpufeatures/cpu-features.o

Учитывая, что я использовал LOCAL_CPP_FLAGS := -Wall, я думаю, что произойдет обратное - все исходники C ++файлы будут собираться с -Wall, а один файл C будет создаваться без.

1 Ответ

0 голосов
/ 26 августа 2018

Это просто опечатка, вам нужно LOCAL_CPPFLAGS, только один _ там.

Что касается cpu-features.c, он получает -Wall, потому что $(NDK_ROOT)/sources/android/cpufeatures/Android.mk требует этого в LOCAL_CFLAGS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...