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

时间:2018-06-20 03:41:59

标签: c# cmake swig

我正在尝试基于单个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模式?

1 个答案:

答案 0 :(得分:0)

在阅读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生成的来源列表。

相关问题