我正在尝试基于单个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模式?
答案 0 :(得分:0)
在阅读UseSWIG.cmake
的源代码之后,我想到了以下想法:
找出由swig_add_library()
创建的目标的实际调用方式。在UseSWIG.cmake
代码中,它称为${SWIG_MODULE_${name}_REAL_NAME}
。例如,您可以使用make help
来找到它。
读取swig目标的SOURCES
属性:get_property(TARGET <target from p.1> PROPERTY SOURCES
。这应该给您swig生成的来源列表。