Cmake 我可以从别名目标获取原始目标名称吗?

Cmake 我可以从别名目标获取原始目标名称吗?,cmake,Cmake,如果我在CMake中创建别名目标,就像 add_library(my::foo ALIAS my_foo) 是否有任何方法可以从别名目标查询基础目标名称的名称 我的用例: 一个共享的C++代码库,具有几个独立的模块。此代码库的根文件夹包含一个CMakeList.txt,将通过add_子目录添加到使用它的项目中。根据我们的约定,例如,my_foo将始终位于名为my_foo的子文件夹中。此外,my_foo将作为别名targetmy::foo导出,并在项目中使用。请注意,my_foo始终是一个接口

如果我在CMake中创建别名目标,就像

add_library(my::foo ALIAS my_foo)
是否有任何方法可以从别名目标查询基础目标名称的名称

我的用例:

  • 一个共享的C++代码库,具有几个独立的模块。此代码库的根文件夹包含一个
    CMakeList.txt
    ,将通过
    add_子目录
    添加到使用它的项目中。根据我们的约定,例如,
    my_foo
    将始终位于名为
    my_foo
    的子文件夹中。此外,
    my_foo
    将作为别名target
    my::foo
    导出,并在项目中使用。请注意,
    my_foo
    始终是一个
    接口
    目标,因此我无法在其上设置任何自定义属性
  • 我们使用conan来管理第三方库依赖关系。所有具有此类依赖关系的模块都包含
    conanfile.txt
  • 为了方便起见,我想编写一个函数(位于共享代码库的根CMakeList中),该函数获取项目想要使用的模块目标列表,并扫描所有模块目标以查找conanfile,并设置所使用模块目标的依赖项。我希望能够将
    my::foo
    作为参数传递给该函数,但从函数中的该参数派生出
    my_foo
    ,以获得相应的文件夹名,以便扫描该文件

根据我的用例解决问题的任何其他建议也欢迎

别名目标有一个特殊属性,用于存储原始目标的名称:


别名目标有一个特殊属性,用于存储原始目标的名称:

get_target_property(my_foo_original my::foo ALIASED_TARGET)
message(STATUS "Alias my::foo refers to the target ${my_foo_original}")