gpt4 book ai didi

python - 使用 Boost/python.hpp 的 CMake 编译 c++ 程序

转载 作者:行者123 更新时间:2023-11-30 02:38:54 24 4
gpt4 key购买 nike

我目前正在尝试使用 CMake 编译一个 C++ 文件。但是由于我使用的是 Boost::python,所以它无法编译。我设置了一个小测试文件来弄清楚我需要做什么,但我就是无法让它工作。任何帮助将不胜感激!!

测试文件:

#include <Python.h>
#include <boost/python.hpp>
#include <iostream>

using std::cout;
using std::endl;

int main()
{
namespace py = boost::python;

Py_Initialize();

// Retrieve the main module's namespace
py::object global(py::import("__main__").attr("__dict__"));

py::exec("print 'Hello from Python!' \n", global, global);

return 0;
}

如果我只是使用它会编译,

clang++ -I/usr/include/python2.7 -lpython2.7 -lboost_python -std=c++11 boosttest.cpp -o boosttest

我试过这个 CMakeLists.txt 让它工作。

cmake_minimum_required(VERSION 3.2)

FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(Boost)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
LINK_LIBRARIES(${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

add_executable(Test1 boosttest.cpp)
target_link_libraries(Test1 ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

我得到的是

undefined reference to `boost::python::import(boost::python::str)'

还有几个相同的类别。

最佳答案

感谢Mark的帮助,感谢我包含后的新错误

find_package(Boost REQUIRED python)

我能够弄清楚问题是 CMake 选择了 python 3.4 的库,但 Boost 是针对 2.7 构建的。

所以解决方案是这样包含版本:

FIND_PACKAGE(PythonLibs 2.7 REQUIRED)

关于python - 使用 Boost/python.hpp 的 CMake 编译 c++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30337759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com