OSX 10.10 CMake 3.0.2 和 clang 找不到本地标头
OSX 10.10 CMake 3.0.2 and clang won't find local headers
在OSX 10.9上,我在下安装了各种头库
/usr/include
/usr/local/include
一切都很顺利。今天我对约塞米蒂进行了"免费升级",突然一切都停止了。我和Yosemite一起(以前)升级了Xcode(注意,我不是用Xcode编译的,而是直接通过命令行clang)。
我有一个CMakeLists.txt,它清楚地包括/usr/include
set(INCLUDE_HEADERS ${INCLUDE_HEADERS}
/usr/include
/usr/local/include)
include_directories(SYSTEM ${INCLUDE_HEADERS})
然而,当我尝试编译时,我立刻得到:
fatal error: 'boost/lexical_cast.hpp' file not found
#include <boost/lexical_cast.hpp>
这是怎么回事?有其他人经历过这种情况,甚至知道如何解决吗?10.9版本运行良好(哦,我为什么要升级?)我可能也做错了什么,因为我注意到cmake已升级到3.0.2
我找到了问题和解决方案。问题是,默认情况下,clang似乎只在平台的SDK文件夹中搜索:
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
这种情况以前从未发生过,或者我在不知情的情况下不知何故发生了变化。因此,我在主页目录中更改了.bash_profile
,并添加了:
export C_INCLUDE_PATH=/usr/include:/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/include:/usr/local/include
关闭并重新打开一个新的终端,现在clang找到了include dirs,工作正常。尽管我感到困扰的是,似乎只有后者(/usr/local/include)与-I标志一起使用。
这种情况的典型方法是:
find_package(boost REQUIRED)
if(Boost_FOUND)
include_directories(${boost_INCLUDE_DIRS})
endif()
它将把BOOST头的路径添加到编译器搜索路径中。
相关文章:
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- 使用 Qt: Clang: 错误: 没有这样的文件或目录 ' " ', /bin/sh: " : 找不到命令
- 致命错误:在 -std=c++17 的 clang 6.0 中找不到'charconv'文件
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 在 macOS 10.13.6 clang 7.0 上的 Qt 5.12.0 上找不到'QtSerialPort'文件
- 为什么clang找不到在调用站点之前声明的函数
- Clang编译器/链接器找不到x86_64架构的符号NSMenuItem
- Clang (C++) 在专用化中找不到名称
- RIOS X Mavericks上使用clang++构建的内部示例在链接上找不到STL标准库
- Clang 在模板上下文中找不到在函数定义后实例化的函数
- clang++:致命错误:找不到'unistd.h'文件
- 我想在Windows上使用Clang从C++编译64位代码-找不到stdio.h文件
- 找不到 clang/AST/RecursiveASTVisitor.h 文件
- 找不到clang+++OpenMP+stdlibc++的Includes