Кроссплатформенная компиляция: свойство с атрибутом 'retain (или strong)' должно иметь тип объекта

Мне нужна помощь для расшифровки ошибки компиляции с конкретным файлом Objective-C++. Он включен в проект Xcode. В этом контексте он компилируется без ошибок.

Я видел много других вопросов об этой ошибке, но ни один из них не помог мне до сих пор.

Вот командная строка, созданная XCode 9.3, где я удалил опции, не связанные с моей проблемой:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch x86_64 
-fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 
-std=gnu++11 -stdlib=libc++ -fobjc-arc -DDEBUG=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.3.sdk 
-fasm-blocks -fstrict-aliasing -mios-simulator-version-min=8.0 -g -fvisibility-inlines-hidden -fobjc-abi-version=2 -fobjc-legacy-dispatch -MMD -MT dependencies

Я использую node-gyp / djinni для создания одного и того же кода кросс-платформенным способом. Вот цель c gyp цель:

  {
      "target_name": "djinni_objc",
      "type": "static_library",
      "xcode_settings": {
        "CLANG_ENABLE_OBJC_ARC": "YES",
      },
      "sources": [
        "<!@(python glob.py objc  '*.cpp' '*.mm' '*.m' '*.h')",
        "proxy_cache_impl.hpp",
        "proxy_cache_interface.hpp",
      ],
      "include_dirs": [
        "objc",
      ],
      "direct_dependent_settings": {
        "include_dirs": [
          "objc",
        ],
      },
    },

Эта цель производит эту командную строку clang:

c++ '-DNODE_GYP_MODULE_NAME=djinni_objc' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' 
'-D_FILE_OFFSET_BITS=64' -Os -gdwarf-2 -mmacosx-version-min=10.7 -arch x86_64-Wall -Wendif-labels -std=gnu++0x 
-stdlib=libc++ -fno-threadsafe-statics -fno-strict-aliasing -fobjc-arc -fno-strict-aliasing -fobjc-arc -fobjc-arc -MMD

Еще раз я удалил параметры компиляции, которые не связаны с проблемой.

Ошибка компиляции:

ошибка: свойство с атрибутом 'retain (или strong)' должно иметь тип объекта

@property (неатомный, сильный, только для чтения) dispatch_queue_t methodQueue;

Поэтому я ищу запись (записи) для размещения в разделе.gyp файла "xcode_settings", чтобы эта ошибка исчезла.

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Это файл Objective-C++.

РЕДАКТИРОВАТЬ 2: мне удалось добавить -x objective-c++ в командной строке, но ошибка все еще есть:(

РЕДАКТИРОВАТЬ 3: Решение этой проблемы состоит в том, чтобы отредактировать файл node-gyp common.gypi, чтобы прокомментировать / удалить следующие xcode.settings:

     'MACOSX_DEPLOYMENT_TARGET': '10.7',       # -mmacosx-version-min=10.7

если вы установили его глобально, он, вероятно, находится в / users /username/.node-gyp/node-version/ include / node

Замените имя пользователя и версию узла на соответствующие значения.

Мне бы хотелось, чтобы этот вопрос оставался открытым, чтобы предложить лучший вариант для отмены этих настроек.

0 ответов

Другие вопросы по тегам