[英]Possible to use precompiled headers with MIDL generated files?
我们确实有一个使用MIDL工具创建特定头文件/ iid文件和代理文件的项目。 这些文件将使用调用nmake的后期构建步骤进行编译,并与项目的其余部分链接。
是否可以对IDL生成的文件使用预编译的标头? 如何注入#include "stdafx-h"
并删除其他包含的标头?
使用/ FI选项 (强制包含):“此选项的作用与在CL环境变量的命令行中指定的每个源文件的第一行的#include指令中用双引号指定文件的效果相同,或在命令文件中。”
它不会删除其他标头,但是使用预编译标头不是必需的...您要预编译的所有标头都应包含在stdafx.h中。 然后,只要文件具有包含防护,则将它们再次包含在源文件中就不会有问题。
例
生成一个a.cpp
文件:
#include <a.h>
#include <b.h>
//rest of the code
假设您要预编译ah
和bh
。 然后创建文件stdafx.h:
#include <a.h>
#include <b.h>
然后,使用/ FI选项将此stdafx.h作为第一个文件包含到a.cpp
。 如果文件ah
和bh
包含防护 ,则将它们保留在a.cpp
中不是问题...
“ stdafx.h”仅是一个约定。 如果您知道生成的源文件始终具有包含标头的标准前缀,则可以在/Yu
开关中命名它们的最后一个(使用预编译标头)。 要创建PCH,请仅使用固定的标头创建一个.cpp文件,然后使用/Yc
编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.