使用 Boost/python.hpp 使用 CMake 编译 c++ 程序
Compile c++ Programm with CMake that uses Boost/python.hpp
我目前正在尝试使用 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)'
还有几个相同的类别。
你尝试了吗
find_package(Boost REQUIRED python)
也运行 冗长地看看发生了什么
cmake . --debug-output
make VERBOSE=1
感谢马克的帮助,感谢我收录后出现的新错误
find_package(Boost REQUIRED python)
我发现问题是 CMake 选择了 python 3.4 的库,但 Boost 是针对 2.7 构建的。
所以解决方案是这样包含版本:
FIND_PACKAGE(PythonLibs 2.7 REQUIRED)
我目前正在尝试使用 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)'
还有几个相同的类别。
你尝试了吗
find_package(Boost REQUIRED python)
也运行 冗长地看看发生了什么
cmake . --debug-output
make VERBOSE=1
感谢马克的帮助,感谢我收录后出现的新错误
find_package(Boost REQUIRED python)
我发现问题是 CMake 选择了 python 3.4 的库,但 Boost 是针对 2.7 构建的。
所以解决方案是这样包含版本:
FIND_PACKAGE(PythonLibs 2.7 REQUIRED)