我们确实有一个项目使用 MIDL 工具来创建特定的头文件/iid 和代理文件。这些文件使用调用 nmake 的构建后步骤进行编译并与项目的其余部分链接。
IDL 生成的文件可以使用预编译头文件吗?如何注入(inject) #include "stdafx-h"
并删除其他包含的 header ?
最佳答案
使用 /FI option (Force Include): "此选项与在命令行、CL 环境变量或命令文件中指定的每个源文件的第一行的#include 指令中用双引号指定文件具有相同的效果”
它不会删除其他 header ,但这对于要使用的预编译 header 不是必需的...您要预编译的所有 header 都应包含在 stdafx.h 中。然后,如果文件有包含保护,那么当它们再次包含在源中时就不会成为问题。
示例
生成的a.cpp
文件:
#include <a.h>
#include <b.h>
//rest of the code
假设您要预编译a.h
和b.h
。然后创建文件 stdafx.h:
#include <a.h>
#include <b.h>
然后使用/FI 选项将此 stdafx.h 作为第一个文件包含到 a.cpp
中。如果文件 a.h
和 b.h
有 include guards , 将它们留在 a.cpp
中不是问题...
关于c++ - 可以将预编译 header 与 MIDL 生成的文件一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593231/