Я использую CMake для создания проекта Android.
Для сборки проекта используется набор инструментов «android.toolchain.cmake».
Все переменные окружения устанавливаются, как описано в разделе об использовании android cmake.
Следующие переменные Option устанавливаются как переменные
ANDTOOLCHAIN
ANDROID_STANDALONE_TOOLCHAIN
ANDROID_ABI
ANDROID_NATIVE_API
ANDROID_STL
CC и CXX указывают на androideabi-GCC & андроидаби-г ++ соответственно
CMAKE успешно генерирует файлы Make, но когда я «создаю» проект, он выдает «Ошибка при выполнении команды link: нет такого файла или каталога».
Детали link.txt как под
* cd / Extra / svnroot / 2014_Project / build / project123 && / usr / bin / cmake -E cmake_link_script CMakeFiles / project123dir / link.txt —verbose = 1
CMAKE_C_COMPILER -fPIC -Wno-psabi —sysroot = / path_to_sysroot_dir / sysroot -fpic -funwind-tables -finline-limit = 64 -figned-char -no-canonical-prefixes -march = armv7-a -mfloat-abi = softfp -mfpu = vfpv3-d16 -fdata-section -ffunction-section -Wa, — noexecstack -Wno-missing-field-initializers -Wno-строго-псевдонимы -Wno-не рекомендуется -Wno-unused -Wno-unused-variable -Wsign-сравнить — Wsequence-point -Wunused-but-set-variable -Wall -Wextra -Wno-unused-параметр -fno-строго-псевдонимы -pthread -Wl, — fix-cortex-a8 -Wl, — no-undefined -Wl, -allow-shlib-undefined -Wl, — gc-секции -fuse-ld = gold -Wl, -z, noexecstack -Wl, -z, relro -Wl, -z, теперь -shared -Wl, -soname, libproject123 .so -o ../libproject123.so CMakeFiles / project123_Sources.dir / MyAdapter.cpp.o
CMakeFiles / project123_Sources.dir /SystemInfo.cpp.o CMakeFiles /
project123_Sources.dir /ServiceControl.cpp.o CMakeFiles /
project123_Sources.dir /Wrapper.cpp.o CMakeFiles /
project123_Sources.dir /Service.cpp.o CMakeFiles /
project123_Sources.dir /MemMap.cpp.o CMakeFiles /
project123_Sources.dir.dir / Trace.cpp.o
-L / path_to_ toolchain_dir / android-toolchain / bin / armeabi-v7a
-L / Extra / svnroot / 2014_Q4_Mobile / сборки
-Л / path_to_thirdparty_lib / Zlib-1.2.7 / Библиотека
-L / path_to_thirdparty_lib /libzip-0.11.1
-L / path_to_thirdparty_lib / boost_1_53_0 / lib-android
-L / path_to_thirdparty_lib / локон-7.26.0-патч / Библиотека
-L / path_to_thirdparty_lib /fips-openssl-1.0.1g/lib / path_to_thirdparty_lib
/boost_1_53_0/lib-android/libboost_date_time-gcc-mt-1_53.a
/path_to_thirdparty_lib/boost_1_53_0/lib-android/libboost_filesystem-gcc-mt-1_53.a
/path_to_thirdparty_lib/boost_1_53_0/lib-android/libboost_system-gcc-mt-1_53.a / path_to_thirdparty_lib
/boost_1_53_0/lib-android/libboost_thread-gcc-mt-1_53.a
/ path_to_thirdparty_lib
/boost_1_53_0/lib-android/libboost_program_options-gcc-mt-1_53.a
/ path_to_thirdparty_lib
/boost_1_53_0/lib-android/libboost_serialization-gcc-mt-1_53.a
/ path_to_thirdparty_lib /curl-7.26.0-patch/lib/libcurl.a
/ path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/libssl.a
/ path_to_thirdparty_lib /fips-openssl-1.0.1g/lib/libcrypto.a
/ path_to_thirdparty_lib /zlib-1.2.7/lib/libz.a
/ path_to_thirdparty_lib /libzip-0.11.1/libzip.a -ldl -lrt
«/Path_to_toolchain_dir/android-toolchain/arm-linux-androideabi/lib/armv7-a/thumb/libstdc++.a»»/path_to_toolchain_dir/android-toolchain/arm-linux-androideabi/lib/armv7-a/thumb/libsupc++. символ «*
Все файлы в файле link.txt указывают на правильный каталог / путь, и нет проблем с любым из путей к файлам. В файле link.txt вместо фактического пути к компилятору он использует CMAKE_C_COMPILER. Я предполагаю, что это создает проблему, так как команда «make» не может найти фактический путь к компилятору.
Любая помощь в решении этой проблемы будет принята с благодарностью.
Недавно я столкнулся с той же проблемой и не мог понять, почему не удалось заменить CMAKE_C_COMPILER на правильный путь. Так что я в конечном итоге сделать, чтобы изменить android.toolchain.cmake, где устанавливается CMAKE_CXX_CREATE_YYY. От
set( CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> ...")
set( CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_C_COMPILER> ...")
set( CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ...")
в
set( CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> ...")
set( CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_CXX_COMPILER> ...")
set( CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> ...")
И CMake смог сгенерировать правильный link.txt. Надеюсь это поможет.