BoomingTech / Piccolo

Piccolo (formerly Pilot) – mini game engine for games104
MIT License
5.69k stars 1.79k forks source link

Macos Arm平台parser无法识别std::vector<T>类型 #464

Closed Justpenz233 closed 8 months ago

Justpenz233 commented 9 months ago

Describe the bug | Bug描述 在Macos M2pro 14.0 (23A344)平台上对Piccolo进行编译,对meta_example.h的生成代码中发现: static void set_m_int_vector(void* instance, void* field_value){ static_cast<BaseTest*>(instance)->m_int_vector = *static_cast<int*>(field_value);} , 同样涉及到所有使用了std::vector类型的反射field均只会被识别为T.

在对Parser的调试中发现是因为clang_getCursorType所导致的。

Steps to reproduce | 如何复现 Steps to reproduce the behavior:

  1. 使用Macos M系进行编译。

Screenshots/Logs | 截图/日志 engine/source/_generated/reflection/mesh_data.reflection.gen.h:349:123: error: no viable overloaded '=' static void set_vertex_buffer(void* instance, void* field_value){ static_cast<MeshData*>(instance)->vertex_buffer = *static_cast<int*>(field_value);} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Desktop | 桌面环境

Justpenz233 commented 8 months ago

该Bug是由于Macos系统更新后Header位置发生了改变,目前最新的Macos14.0位置在:${osx_sdk_platform_path_test}/Developer/SDKs/MacOSX14.0.sdk/usr/include/c++/v1