我正在尝试使用CMake编译另一个库,它需要Boost。
我在OS X 10.10 Yosemite上使用brew安装了CMake和Boost,但CMake拒绝找到它。 Boost位于/usr/local/Cellar/boost/1.55.0_2
我尝试了以下内容:
-DBoost_DIR
和-DBOOST_ROOT
-DBoost_INCLUDE_DIR
-DBOOST_INCLUDEDIR
和/include
为什么CMake公然无视我的指示? :(
答案 0 :(得分:8)
我找到了一个单独的自制软件包boost-python
。安装完成后,CMake确实找到了Boost:
brew install boost-python
给了我
> mkdir build ; ( cd build ; cmake .. )
-- The C compiler identification is AppleClang 6.0.0.6000056
-- The CXX compiler identification is AppleClang 6.0.0.6000056
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PythonInterp: /usr/local/bin/python (found version "2.7.9")
-- Found PythonLibs: /usr/lib/libpython2.7.dylib (found version "2.7.5")
-- Boost version: 1.56.0
-- Found the following Boost libraries:
-- python
-- Configuring done
-- Generating done
(链接有问题,但这是另一个故事)
答案 1 :(得分:5)
我在使用C ++ / Python / Boost / CMake进行编译时遇到了麻烦(具体来说,我正在尝试构建https://github.com/mapillary/OpenSfM)。
我收到了这样的错误
Linking CXX shared library .../OpenSfM/opensfm/csfm.so
Undefined symbols for architecture x86_64:
"boost::python::instance_holder::deallocate(_object*, void*)", referenced from:
Undefined symbols for architecture x86_64:
"boost::python::instance_holder::deallocate(_object*, void*)", referenced from:
...
受到上述评论的启发,我试图找到这个神话般的" boost-python",但它并不存在。相反,我结束了使用自制软件重新安装python正常的提升。
brew install boost --with-python
那很有用。 CMake现在可以找到提升和任何python提升所需的东西,并且编译成功。
答案 2 :(得分:0)
就我而言,将cmake和boost升级到最新版本都可以解决问题
brew upgrade boost cmake