我有一个关于CMake的问题,我需要帮助来解决我得到的以下错误:
CMake Error at :::: (add_custom_target):
add_custom_target cannot create target "generate" because another target
with the same name already exists. The existing target is a custom target
created in source directory :::::.
Run Code Online (Sandbox Code Playgroud)
这里两个相同级别的目标名称CMakeLists.txt是相同的,我想保持它们相同,没有任何冲突.谁能帮我吗?
根据CMake政策CMP0002(由CMake 2.6引入,强调我的):
使用 add_executable,add_library或add_custom_target创建的目标名称是逻辑构建目标名称.逻辑目标名称必须全局唯一 [...]
以下注释值得一提,无论如何都可能对您有所帮助:
自定义目标必须只具有全局唯一名称(除非将全局属性
ALLOW_DUPLICATE_CUSTOM_TARGETS与Makefile生成器一起使用).
这意味着存在一个名为的全局属性ALLOW_DUPLICATE_CUSTOM_TARGETS,可能就是您正在寻找的属性.它的用途有限,你应仔细阅读文档,但值得一试.
最相关的部分如下:
Makefile生成器能够支持重复的自定义目标名称.[...]但是,设置此属性将导致非Makefile生成器产生错误并拒绝生成项目.
为了能够使用重复的自定义目标,请将以下行放入CMakeLists.txt:
set(ALLOW_DUPLICATE_CUSTOM_TARGETS TRUE)
Run Code Online (Sandbox Code Playgroud)
如果它解决你的问题主要取决于实际问题,所以我不能说.
小智 6
这可能是一个很好的帮助:
OUTPUT_NAME 在构建目标时设置目标的真实名称,并且可用于帮助创建两个同名的目标,即使 CMake 需要唯一的逻辑目标名称。
https://cmake.org/cmake/help/v3.0/command/set_target_properties.html
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |