Cmake 无法在 Homebrew 中找到 boost_pyhton 库

Posted

技术标签:

【中文标题】Cmake 无法在 Homebrew 中找到 boost_pyhton 库【英文标题】:Cmake is unable to find boost_pyhton libraries in Homebrew 【发布时间】:2019-10-07 03:29:18 【问题描述】:

我正在尝试在 Mac 上构建 C++ 代码。我正在使用 CMake 进行设置。这是我的文件(请注意,我在 python3.7、python37、python 上遇到错误,但下面会详细介绍):

    find_package(Boost COMPONENTS python3.7)
    message("Includes: $Boost_INCLUDE_DIRS $Python3_INCLUDE_DIRS")

我收到以下错误:

-- Found Boost 1.71.0 at /usr/local/lib/cmake/Boost-1.71.0
--   Requested configuration: QUIET COMPONENTS python3.7
-- BoostConfig: find_package(boost_headers 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_headers 1.71.0 at /usr/local/lib/cmake/boost_headers-1.71.0
-- BoostConfig: find_package(boost_python3.7 1.71.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Could NOT find Boost: missing: python3.7 (found /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0"))
Includes: /usr/local/include /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m

我正在使用最新的 Homebrew

brew --version
Homebrew 2.1.12
Homebrew/homebrew-core (git revision 5b0c; last commit 2019-10-06)

并且已经加载了可用的提升公式。

brew list | grep boost
boost
boost-python
boost-python3

/usr/local/lib/cmake/ 下查看,我看到提到的大多数 boost 库,但缺少 boost_python 和 boost_numpy。我检查了在线公式定义,boost 确实包含该目录中的所有 cmake 设置,但 boost_python3 不包含任何内容。

我错过了一些包裹吗?是否有一种可移植的方式来设置它,以便它自动找到 libboost_python37.* 文件?

【问题讨论】:

【参考方案1】:

因为没有python3.7 组件。这个组件叫做python37, at least for CMake 3.16 and earlier:

请注意,Boost Python 组件需要 Python 版本后缀(Boost 1.67 及更高版本),例如python36 或 python27 分别用于针对 Python 3.6 和 2.7 构建的版本。这也适用于使用 Python 的其他组件,包括 mpi_python 和 numpy。较早的 Boost 版本可能使用特定于发行版的后缀,例如 2、3 或 2.7。这些也可以用作后缀,但请注意它们不可移植

【讨论】:

以上是关于Cmake 无法在 Homebrew 中找到 boost_pyhton 库的主要内容,如果未能解决你的问题,请参考以下文章

OSX + homebrew + CMake + libpng 版本不匹配问题

如何将 CLion 自定义 CMake 可执行文件设置为随 Homebrew 安装的版本?

在Windows 10上的CLion / CMake中“无法找到SFML”错误?

CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件

即使已安装 CMake 也无法找到 gRPC 库(mac)

CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置