繁体   English   中英

在CMake中使用多个代码生成器

[英]Using multiple code generators in CMake

我正在尝试使用基于单个CMake项目的SWIG创建C#应用程序,其中两个代码生成器通过像这样的依赖树被依次调用

CMake Project A
  Target 1: Json -> C++ code generator using add_custom_command()
    L Target 2: C++ -> C# code generator using swig_add_library()
        L Target 3: C# application using add_executable()

问题是在构建Target 2时,SWIG会生成许多文件名未知的C#文件。 因此,我们需要提前知道所有这些文件名才能构建目标3。

谁能建议我要执行的操作是否可以在单个CMake项目(A)中完成,还是我必须将其拆分为两个CMake项目(A和B)?

CMake Project A
  L CMake Project B

目标像这样分裂

CMake Project A
  Target 1: Json -> C++ code generator using add_custom_command()
    L Target 2: C++ -> C# code generator using swig_add_library()

CMake Project B
  Target 1: C# application using add_executable()

有没有像我一样使用多个代码生成器的CMake模式?

阅读UseSWIG.cmake源代码后,我想到了以下想法:

  1. 找出如何真正调用swig_add_library()创建的目标。 UseSWIG.cmake代码中,它称为${SWIG_MODULE_${name}_REAL_NAME} 例如,您可以通过make help找出来。

  2. 阅读swig目标的SOURCES属性: get_property(TARGET <target from p.1> PROPERTY SOURCES 。这应该为您提供swig生成的来源列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM