在OSX 10.9上,我在
下安装了各种头库/usr/include
/usr/local/include
一切都很好。 今天我对优胜美地进行了“免费升级”,突然间一切都停止了。 和Yosemite一起,我(之前)也升级了Xcode(注意,我不是使用Xcode进行编译,而是直接通过命令行进行编译)。
我有一个明确包含/ usr / include
的CMakeLists.txtset(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
答案 0 :(得分:3)
我发现了问题和解决方案。 问题是默认情况下,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找到包括dirs,并且工作正常。 虽然我只是因为后者(/ usr / local / include)似乎与-I标志一起使用而感到困扰。
答案 1 :(得分:2)
这种情况的典型方式是:
find_package(boost REQUIRED)
if(Boost_FOUND)
include_directories(${boost_INCLUDE_DIRS})
endif()
它会将BOOST标头的路径添加到编译器搜索路径中。