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:

image

 c.cpp:

image

 

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

c.cpp:

//空的

image

 

 

 

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

 

posted @ 2025-11-08 11:07  耿明岩  阅读(3)  评论(0)    收藏  举报
希望能帮助到你,顺利解决问题! ...G(^_−)☆