использование необъявленного идентификатора '_ISspace' - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь собрать библиотеку C для Android с помощью Android-ndk-r20.Я использую CMake для сборки своей библиотеки.

Архитектура android-arm64

Проблема в том, что я получаю следующие ошибки во время компиляции:

/ home/ erez / android-ndk-r20 / toolchains / llvm / prebuilt / linux-x86_64 / sysroot / usr / include / c ++ / v1 / __ locale: 382: 32: ошибка: использование необъявленного идентификатора '_ISspace'

Та же ошибка относится ко всем видам макросов - _ISprint , _IScntrl и т. Д.

Я пытался найти его в Google, но нет упоминания оэтот макрос, что странно.

Когда я открываю этот файл, я вижу, что некоторые макросы используются.

Я попытался найти его, но не смог найти место, где определен этот макрос.Это сбивает с толку меня, потому что я предполагаю, что nkd / LLVM будет самодостаточным со всеми необходимыми заголовками и библиотеками, но я нигде не могу найти этот заголовок.

Это моя команда CMake:

cmake -DCMAKE_CXX_FLAGS: STRING = "- std = c ++ 11" -DANDROID_NATIVE_API_LEVEL = 24 -DTARGET = android -DANDROID_ABI = arm64-v8a -DLIBRARY_OUTPUT_PATH_ROOT_TOOK_TOOK_TOOK_TOOK * = 10_TOOK = 10H_LOOK = 10H_LOOT = 10H_LOOT = 10HA_TOOF = 10_A_TOOF) */../../../../../android-ndk-r20/build/cmake/android.toolchain.cmake -DBUILD_DATE = $ (дата +% Y-% m-% d) ../../rootCmake;make VERBOSE = 1 install;

Кто-нибудь знает, как мне решить эту проблему?

Edit:

root CMakeLists.txt:

project(Osn)
cmake_minimum_required(VERSION 2.8)

set(TARGET "android" CACHE STRING "Set the target ios mac32/64, linux32/64, android, win32/64")

# Static link the c++ library in case of a gcc compiler.
if (CMAKE_COMPILER_IS_GNUCC)
  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/gcc_config.cmake)
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/darwin.cmake)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux.cmake)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/msvc_config.cmake)
#elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
#  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ios-arm.cmake)
endif()

if (${TARGET} MATCHES "android")
  include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/android.cmake)
endif()

add_subdirectory(OsnClient/OsnClient)

#if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS")
  add_subdirectory(OsnClientApp/OsnClientApp)
#endif()

srcs CMakelists.txt:

project(ProjectName)
cmake_minimum_required(VERSION 2.8)

set(OSN_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
set(OSN_INCLUDE ${OSN_ROOT}/../../../include)
set(OSNCLIENT_EXPORTS on)


set(gabro_files ${CMAKE_CURRENT_SOURCE_DIR}/../../../gabro/${TARGET} )
if (${TARGET} MATCHES android)
  set(gabro_files ${CMAKE_CURRENT_SOURCE_DIR}/../../../gabro/${TARGET}-${ANDROID_ABI} )
endif()


if (${CMAKE_SYSTEM_NAME} MATCHES Windows)
  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}
/NODEFAULTLIB:libboost_date_time-vc100-mt-s-1_47.lib
....
....
/VERBOSE:LIB
")
endif()

add_definitions(-DGABRO_WIN32_API_STATIC)

set(src
  ${OSN_ROOT}/src1.cpp
  ${OSN_ROOT}/src2.cpp
)

include_directories(
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${OSN_ROOT}
  ${gabro_files}/include
  ${OSN_INCLUDE}
)

if (${TARGET} MATCHES android)
  set(log_lib  ${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/lib )
endif()

link_directories(
  ${gabro_files}/lib
)


set(link_libs gabro_client_api_static)

if (WIN32)
  list(APPEND link_libs gabro_static_external-mt wininet )
elseif (${CMAKE_SYSTEM_NAME} MATCHES Darwin)
  list(APPEND link_libs gabro_static_external pthread z dl)
elseif (${TARGET} MATCHES android)
  list(APPEND link_libs gabro_static_external libOsnClient.so log)
else()
  list(APPEND link_libs gabro_static_external pthread dl rt)
endif()

if (${CMAKE_SYSTEM_NAME} MATCHES "ios")
   add_library(${PROJECT_NAME} STATIC ${src})
else()
   add_library(${PROJECT_NAME} SHARED ${src})
endif()

target_link_libraries(${PROJECT_NAME} ${link_libs} )

install(TARGETS ${PROJECT_NAME} 
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

clang ++ - версия:

Android (5220042 на основе r346389c) clang версия 8.0.7(https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm 3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd) (на основе модели LLVM 8.0.7svnux * 10 * * 10 * * 10-x)

...