cocos2d-x使用CMake编译安卓引入Box2D报ext_box2d重复错误如何解决
cocos2d-x 安卓CMake编译Box2D重复目标错误解决方案
错误根因
你手动调用add_subdirectory引入Box2D的操作与cocos2d内置的外部依赖导入逻辑冲突:cocos2d核心库的CMake配置已经预先声明了ext_box2d这个Box2D的导入目标,重复引入对应目录就会触发目标命名冲突。
修复步骤
- 删除你手动添加的
add_subdirectory(MyGame/cocos2d/external/Box2D ${PROJECT_BINARY_DIR}/box2d)这行配置 - 保留
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1)配置,该参数是开启cocos内置Box2D集成能力的必要开关 - 修改
target_link_libraries中的链接目标,将自定义的box2d替换为cocos内置声明的ext_box2d,最终有效配置如下:
add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=1) target_link_libraries(${APP_NAME} cocos2d ext_box2d )
验证操作
修改完成后清空原有CMake构建缓存(安卓端可直接删除proj.android目录下的.cxx和build文件夹),重新执行编译即可,不会再触发重复目标报错,Box2D相关引入也会正常生效。
内容的提问来源于stack exchange,提问作者kiriko kagoyshi
相关产品推荐
相关产品推荐

