我有一些旧的Objective-C代码,正在尝试使用自定义构建框架进行编译。此构建框架对源文件进行预处理,然后将其编译为C源代码,然后使用Cl.exe进行其余的编译。
但是,当我尝试对VS2015执行相同操作时,它在预处理阶段失败。从VS2015开始,VCRuntime.h
间接包含在所有文件中,并使用更新的C ++功能,例如可变参数宏。所以我的预处理器失败了。
因此,有一种方法可以使用Cl.exe预处理我的源代码,例如展开#include,评估#define等而不关心实际代码?我尝试了cl.exe /Tp
,但没有成功。但是,此选项确实可以理解#imports
我终于知道了。
cl.exe /Tp /E /I
命令可以在某种程度上扩展对objective-c (.m)
和c (.c)
源文件的预处理。但是,它无法解析很少的COM
相关代码。
然后我发现an open-source C-Pre-Processor可以成功地预处理.c, .cpp and .m files
。这个工具的好处是,它也支持C ++ 11功能。可变参数模板等]