如何使用 Visual Studio C/C++ 编译器 (cl.exe) 预处理我的 objective-C 代码?
How can I use the Visual Studio C/C++ Compiler (cl.exe) to pre-process my objective-C code?
我有一些旧的 Objective-C 代码,我正在尝试使用我的自定义构建框架进行编译。此构建框架预处理源文件,然后将它们编译为 C 源代码,然后使用 Cl.exe 进行其余编译。
但是,当我尝试对 VS2015 执行相同操作时,它在我的预处理阶段失败了。从 VS2015 开始,VCRuntime.h
间接包含在所有文件中,并使用更新的 C++ 功能,例如可变宏。所以我的预处理器失败了。
那么,有没有办法使用 Cl.exe 来预处理我的源代码,例如在不关心实际代码的情况下展开#includes、评估#defines 等?我尝试了 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 特性,例如可变参数模板等
我有一些旧的 Objective-C 代码,我正在尝试使用我的自定义构建框架进行编译。此构建框架预处理源文件,然后将它们编译为 C 源代码,然后使用 Cl.exe 进行其余编译。
但是,当我尝试对 VS2015 执行相同操作时,它在我的预处理阶段失败了。从 VS2015 开始,VCRuntime.h
间接包含在所有文件中,并使用更新的 C++ 功能,例如可变宏。所以我的预处理器失败了。
那么,有没有办法使用 Cl.exe 来预处理我的源代码,例如在不关心实际代码的情况下展开#includes、评估#defines 等?我尝试了 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 特性,例如可变参数模板等