引言:头文件命名与g++头文件冲突真是太悲剧了。
事件1
事情的起因是,我在mac上开发的c++跨平台程序(使用CMake构建)在linux上编译不通过。严重影响了跨平台这个出发点。于是就想要解决他。
主要提示的错误是:
-
fatal error: string: No such file or directory
-
os_defines.h:44:19: error: missing binary operator before token 。提示了几百个错误..
在网上搜索后发现,有方案说,这是由于编译器把#include
查找问题2的解决方法。用出错信息搜索后发现这个答案。提到了编译json遇到的问题。但是第一遍匆匆阅读过去,以为是搜索路径的问题。于是在CMakeList设置了头文件的搜索路径。不成功。
把工程项目一直往后回退,发现在6月13日的那个提交之后,开始编译不过,而那个提交主要是用于处理特征的。
后来,再一次搜到这个答案,仔细一看之下发现,其中的关键词features.h
,而这个文件在我自己的项目也有!!!命名冲突
。把features.h改掉之后编译通过。再把之前的.cpp改回.c,编译依然通过。
事件2
命名大事件,无独有偶。 之前在用QT写测试程序的时候,把工程名命名为first
。
报错:**-1: error: Circular all <- first dependency dropped. **
貌似qt自己的程序有一个first,你再建一个first就粗事了,会造成循环依赖。