我正在尝试使用基于单个 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# 文件。因此,我们需要提前知道所有这些文件名才能构建 Target 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
我想出了以下想法:
弄清楚
swig_add_library()
是如何创建目标的真的被称为。在UseSWIG.cmake
代码称为${SWIG_MODULE_${name}_REAL_NAME}
.你可以用make help
找到它,例如。阅读
SOURCES
swig 目标的属性:get_property(TARGET <target from p.1> PROPERTY SOURCES
.这应该会为您提供 swig 生成的源列表。
关于c# - 在 CMake 中使用多个代码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939860/