使用CMake编译使用Boost/python.hpp的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)'
和更多相同类别的
谢谢你的帮助Mark,谢谢我加入
后的新错误find_package(Boost REQUIRED python)
我能够找出问题是CMake选择了python 3.4的库,但Boost是针对2.7构建的。
所以解决方案是包含如下版本:
FIND_PACKAGE(PythonLibs 2.7 REQUIRED)
你试过了吗
find_package(Boost REQUIRED python)
也可以用verbose来运行,看看发生了什么
cmake . --debug-output
make VERBOSE=1
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 什么是"#include <boost/functional/hash.hpp> "?
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Vulkan hpp vk::enumerateInstanceVersion()会导致segfault
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 包含python.h和boost/python.hpp的C++导致SEH异常
- 使用CMake编译使用Boost/python.hpp的c++程序