在CMake中如何创建具有相同名称的目标?

时间:2017-06-22 05:48:52

标签: cmake

我对 CMake 有疑问,我需要帮助才能解决以下错误:

CMakeLists.txt

这里两个相同级别{{1}}的目标名称是相同的,我希望它们保持一致,没有任何冲突。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:6)

根据CMake政策CMP0002(由CMake 2.6引入,强调我的):

  

使用 add_executable,add_library或 add_custom_target 创建的目标名称是逻辑构建目标名称。逻辑目标名称必须全局唯一 [...]

以下说明值得一提,无论如何都可能对您有所帮助:

  

自定义目标必须只具有全局唯一名称(除非将全局属性select ga.* from games_applied ga where ga.games_post_id = 1126 and ( (ga.status not in (4, 5) and ga.rejected_status = 0) or (ga.status = 5 and ga.rejected_status = 1) ); 与Makefile文件生成器一起使用)。

这意味着存在一个名为ALLOW_DUPLICATE_CUSTOM_TARGETS的全局属性,可能就是您正在寻找的属性。它的用途有限,你应仔细阅读文档,但值得一试 最相关的部分如下:

  

Makefile生成器能够支持重复的自定义目标名称。 [...]但是,设置此属性将导致非Makefile生成器产生错误并拒绝生成项目。

为了能够使用重复的自定义目标,请在ALLOW_DUPLICATE_CUSTOM_TARGETS

中添加以下行
CMakeLists.txt

如果它解决了你的问题主要取决于实际问题,所以我不能说。

答案 1 :(得分:2)

这可能是一个很好的帮助:

  

OUTPUT_NAME会在构建目标时设置其真实名称,即使CMake需要唯一的逻辑目标名称,它也可用于帮助创建两个相同名称的目标。

https://cmake.org/cmake/help/v3.0/command/set_target_properties.html