C++修改一个CPP导致其他多个CPP文件重新编译问题(文件夹和标准库重名)
排查出原因是因为文件夹叫map,和标准库中的map重名了,导致Map下的任意文件修改,会导致直接/间接引用map库的大量cpp文件编译! 尽量文件夹不要和标准库名称重名!
QT项目,项目目录:
D:.
│ c.cpp
│ ControlDemo1.pro
│ ControlDemo1.pro.user
│ main.cpp
└─map
a.cpp
c.cpp:
#include <map>
a.cpp
//空的
当我修改a.cpp时,会导致c.cpp和main.cpp重新编译.
因为c.cpp和main.cpp中include 了map(直接或嵌套间接引用),如果把c.cpp中的include <map>去掉,a.cpp的修改不会导致c.cpp编译。
可以在项目构建目录下查看Makefile.Release或者Makefile.Debug文件,文件中写了哪些文件的引用关系,比如main.cpp:

c.cpp:

当我把c.cpp中的 #include <map>去掉后, ..\ControlDemo1\map消失,修改map\a.cpp文件也不会导致c.cpp重新编译。:
c.cpp:
//空的

Mingw编译器和MSVC编译器都有这个问题,尽量项目内文件夹名不要和标准库头文件重名
浙公网安备 33010602011771号