将未包含的头文件添加到 Visual Studio 项目中的最新检查
Posted
技术标签:
【中文标题】将未包含的头文件添加到 Visual Studio 项目中的最新检查【英文标题】:Add non-included header file to up-to-date check in Visual Studio project 【发布时间】:2022-01-08 00:18:55 【问题描述】:我正在使用 Microsoft Visual Studio 2017,并使用 C++ 编写代码。
头文件中的#define
设置总是存在一个问题。第一种方法是将设置放在与特定源文件对应的多个头文件中。这种方法对于最小化重建是可以的,但主要缺点是设置存储在多个文件中。
另一种方法是将所有定义存储在一个config.h
文件中,并将其包含到所有源文件中。配置起来要容易得多,但每次更改设置时都会重新编译包括config.h
在内的所有文件。
所以我决定使用第三种方法。所有设置都存储在config.h
(每个项目一个)中,并且在它们之前有一个特殊的注释行,其中包含确切头文件的相对路径,如下所示:
// in:core/net/http.h
// some http setting
#define CFG_SOME_HTTP_OPTION
// in:core/net/dns.h
// some dns setting
#define CFG_SOME_DNS_OPTION
但是config.h
本身不包含在任何源文件中。相反,它由预构建脚本解析,该脚本构建一个代码,其中包含config.h
中提到的每个头文件的所有定义。然后检查此代码是否与特定标头中已经显示的代码不同,并且仅当代码不同时才进行替换。这种方法保留了前两种方法的优点,因为所有设置仍然在一个头文件中,但只有那些设置被更改的文件才会被重建。
我写了这个脚本,除了一件事之外,一切都很完美。 config.h
是项目的一部分,但不包含在任何源文件中。这就是为什么 Visual Studio 甚至不运行我的预构建脚本因为最新的检查:如果仅在 config.h
中进行更改,它仍然认为该项目是最新的。
我该如何解决这个问题?最简单的方法是为每个项目创建包含config.h
的特殊源文件,但是如果只修改config.h
,也许还有另一种方法可以强制构建过程?
【问题讨论】:
【参考方案1】:解决了。
刚刚将Item Type
更改为C/C++ compiler
,而不是config.h
属性中的C/C++ header
。
【讨论】:
您好 cls,很高兴知道您找到了解决此问题的解决方案!请考虑回答并接受它作为将其状态更改为已回答的答案。见can I answer my own question..,只是一个提醒:)以上是关于将未包含的头文件添加到 Visual Studio 项目中的最新检查的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 无法识别已安装 NuGet 包的头文件
将未映射的菜单项映射到 Visual Studio 中的组合键
microsoft visual studio创建button背景颜色代码