我在Mac OS X上使用Qt-Creator进行C ++开发(我不使用Qt本身)。奇怪的是,Qt-Creator无法找到直接位于/ usr / inlcude中的任何文件。一切都还在编译,但我不能在Qt-Creator中使用自动完成或“跟踪光标下的符号”等功能。
因此,对于像iostream这样的C ++标头,一切都按预期工作,它会找到头文件并正确索引它们。但是如果我想使用unistd.h中的东西,Qt-Creator找不到include目录。我使用的是clang 5.2(来自Apple)和Mac OS X 10.9.2。
我甚至尝试将此(冗余)行添加到我的CMakeLists.txt文件中:
include_directories(/usr/include)
但这没有用。这是我无法忍受的,但它仍然令人沮丧。
答案 0 :(得分:4)
所以我发现了问题(这真的很愚蠢)。我决定从命令行启动Qt Creator。通过这样做,我看到来自clang的错误消息,抱怨未知/错误的论点,这帮助我找到了问题。恕我直言,你永远不会在GUI中看到那些......
为了使C ++ 11正常工作,我不得不去设置 - > Build&运行 - >编译并复制clang并在codegen标志中添加“-std = c ++ 11 -stdlib = libc ++”。我在那里做了一个愚蠢的拼写错误并写了“-std = c ++ 11 -stdlib = c ++”。由于Qt Creator仍然从libc ++中找到了所有头文件并激活了c ++ 11,因此我从不打算再仔细检查这个。但是将这个标志改为正确的标志就可以了。
编辑:只想添加:我发现它非常奇怪,Qt Creator能够找到所有包含文件(我在几个不同的位置使用几个第三方库 - 没有问题)除了/ usr / include中的那些如果搞砸了这些编译器标志。