You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake报错add_library无法创建Plugin重复目标该如何解决?

报错含义

add_library cannot create target "Plugin" because another target with the same name already exists.

这个报错是CMake内置政策CMP0002的约束结果:CMake构建系统内的所有目标(包括库、可执行文件等)必须全局唯一,不允许重名。
报错信息已经明确给出冲突来源:路径D:/CHAI3D/SOFA/src/applications/plugins/plugin下已经创建过一个名为Plugin的共享库目标,你当前的CMakeLists.txt里又通过add_library(${PROJECT_NAME} SHARED ...)尝试创建同名目标,因此触发冲突。

你之前配置的set(ALLOW_DUPLICATE_CUSTOM_TARGETS TRUE)不生效的原因是:这个变量仅对add_custom_target创建的自定义目标生效,你当前冲突的是add_library创建的普通库目标,该变量对这类目标没有约束作用。

解决方案

按优先级从高到低可选以下方案:

  • 重命名你的项目:将project(Plugin VERSION 21.06.99)中的项目名替换为独有的名称,比如project(MySofaPlugin VERSION 21.06.99)。后续所有调用${PROJECT_NAME}的代码会自动同步新名称,不需要额外修改其他逻辑,是成本最低、兼容性最好的方案。
  • 删除重复引入的目标:检查你当前工程的父级CMake配置,确认是否同时引入了SOFA自带的D:/CHAI3D/SOFA/src/applications/plugins/plugin目录和你自己的插件目录,删除其中一个的add_subdirectory配置即可解决冲突。
  • 给目标加命名空间:如果必须保留Plugin作为项目名,可以修改库目标的创建逻辑,给目标加上专属命名空间,比如add_library(myvendor::${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${RESOURCE_FILES}),这种方案需要同步修改所有链接该库的配置,改造成本相对更高。

内容的提问来源于stack exchange,提问作者B_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 15:21:01