Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Boost.Python Makefile到CMakLists.txt 我编写了一些C++文件来创建共享库,这是我的Maxy文件_Makefile_Cmake_Boost Python - Fatal编程技术网

Boost.Python Makefile到CMakLists.txt 我编写了一些C++文件来创建共享库,这是我的Maxy文件

Boost.Python Makefile到CMakLists.txt 我编写了一些C++文件来创建共享库,这是我的Maxy文件,makefile,cmake,boost-python,Makefile,Cmake,Boost Python,Makefile可以生成.so文件。我的CMakeLists.txt是 但是运行CMake会产生以下错误 CMake Error at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1928 (message): Unable to find the requested Boost libraries. Boost version: 1.67.0 Boost include path: /us

Makefile可以生成.so文件。我的CMakeLists.txt是

但是运行CMake会产生以下错误

CMake Error at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1928 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.67.0

  Boost include path: /usr/local/include

  Could not find the following Boost libraries:

          boost_python3

我想用Python3构建它,我已经安装了boost.Python3。如何修复它?

我认为问题在于,Homebrew将boost_python安装在一个单独的目录下,即/usr/local/cillar/boost-python3/1.67.0_1/与boost安装的其他目录不同,即/usr/local/cillar/boost/1.67.0_1

我不在Mac上,因此我不能确切地确定实际的目录结构,以及使用符号链接将Boost Python组件目录符号链接回主Boost安装目录可以完成多少工作

因此,我使用最新的Boost版本1.68从源代码构建并安装在Ubuntu Linux上

./bootstrap.sh --prefix=/bulk/workbench/boost/install --with-python=python3
所有组件都位于/bulk/workbench/boost/install中的include和lib目录下。在CMake配置过程中提供

cmake -DBoost_ROOT=/bulk/workbench/boost/install [path-to-my-project-source-dir]
在我的CMakeLists.txt中使用这个

它能够找到我的boost_python模块


基本上,除非您能够改变自制软件的安装,否则构建自己的Boost可能会更简单。

如何调用cmake?您是否提供-DBoost\u ROOT选项?如果是这样,boost-python3似乎安装在与boost其他部分不同的根目录下。由于我不在mac上,因此无法进一步检查。@compor我没有提供-DBoost_ROOTIs/usr/local/Cellar/boost/1.67.0_1/include符号链接到/usr/local/include下?如果是这样,那么/usr/local/ceral/boost-python3/1.67.0_1/subdirs是否也会发生同样的情况?@compor,no/usr/local/include一个dir包含boost python和其他版本。@compor Adding/usr/local/ceral/boost/1.67.0_1/as-DBoost_ROOT可以生成Makefile,但会返回错误。我认为boost.python与boost不同。最近我发现Boost.Python只是Boost的一个子集。可以通过在安装Boost时设置选项来安装Boost.Python。然而,Homebrew使用的安装方法和目录确实让我感到困惑。没有必要在命令下添加-with python=python3。/b2。使用./bootstrap.sh添加它。
./bootstrap.sh --prefix=/bulk/workbench/boost/install --with-python=python3
cmake -DBoost_ROOT=/bulk/workbench/boost/install [path-to-my-project-source-dir]
find_package(Boost COMPONENTS python REQUIRED)