cmake, связанный с NDK, используется по умолчанию, но он определяет так много параметров. Один из них -Переопределить android.toolchain.cmake в andorid cmake build
elseif(ANDROID_STL STREQUAL gnustl_shared)
set(ANDROID_STL_STATIC_LIBRARIES
supc++)
set(ANDROID_STL_SHARED_LIBRARIES
gnustl_shared)
Теперь я хочу, чтобы gnustl_shared использовать, но не supC++, и я не могу найти в любом случае, чтобы сделать это. Удаление его вручную из android.toolchain.cmake работает для меня. Но я не хочу редактировать файл cmake-файла ndk toolchain на каждой машине. В CMakeLists.txt моего приложения, я попытался
list(FILTER ANDROID_STL_STATIC_LIBRARIES EXCLUDE REGEX ".*supc.*")
list(FILTER CMAKE_CXX_STANDARD_LIBRARIES_INIT EXCLUDE REGEX ".*supc.*")
Но каждый раз, в сгенерированном файле build.ninja, я вижу libsupC++. В LINK_LIBRARIES.
Есть ли чистый способ для меня исключить эту библиотеку при связывании?
Когда я смотрю в 'android.toolchain. cmake' Я вижу, что 'ANDROID_STL_STATIC_LIBRARIES' переносится в' ANDROID_CXX_STANDARD_LIBRARIES', который используется для 'CMAKE_CXX_STANDARD_LIBRARIE S'. Поэтому я бы предположил, что изменение позже решит вашу проблему. Но это не список, это пространство разделено. Вы пробовали что-то вроде 'string (REPLACE" supC++ "" "CMAKE_CXX_STANDARD_LIBRARIES" $ {CMAKE_CXX_STANDARD_LIBRARIES} ")'? – Florian
Это сработало !!! Большое спасибо. Но глядя на файл ndk cmake, как вы узнали, что ANDROID_STL_STATIC_LIBRARIES идет в CMAKE_CXX_STANDARD_LIBRARIES ?? Я не мог найти такую ссылку !! – tosif24
Добро пожаловать. В версии, которую я изучил, это было так (я связал источник в своем ответе). Но даже если это будет 'CMAKE_CXX_STANDARD_LIBRARIES_INIT', он, наконец, окажется в' CMAKE_CXX_STANDARD_LIBRARIES'. – Florian