2013-03-03 40 views
8

我試圖爲我寫的庫建立python綁定,並且我有一些麻煩讓cmake明白它應該使用boost-python庫蟒蛇3.cmake鏈接libboost_python-py32.so而不是libboost_python.so

這裏是我的cmake文件:

cmake_minimum_required(VERSION 2.8) 

FIND_PACKAGE(Boost COMPONENTS 
       system 
       thread 
       python REQUIRED) 
find_package(PythonLibs REQUIRED) 

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

ADD_LIBRARY(
    pschulze SHARED 
    src/candidate_relation.cpp 
    src/schulze.cpp 
    src/calculate.cpp 
    src/candidate.cpp 
    src/ranking.cpp 
    src/userinput.cpp 
    python.cpp) 

TARGET_LINK_LIBRARIES(pschulze ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) 

ADD_EXECUTABLE(
    schulze 
    src/candidate_relation.cpp 
    src/schulze.cpp 
    src/calculate.cpp 
    src/candidate.cpp 
    src/ranking.cpp 
    src/userinput.cpp 
    src/json-spirit/json_spirit_reader.cpp 
    src/json-spirit/json_spirit_value.cpp 
    main.cpp) 

TARGET_LINK_LIBRARIES(schulze ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) 

ADD_DEFINITIONS(-std=gnu++0x -Os) 

add_subdirectory (tests) 

set(CMAKE_BUILD_TYPE Debug) 

這是鏈接錯誤,我得到:

Linking CXX executable schulze 
CMakeFiles/schulze.dir/src/schulze.cpp.o: In function `arg_to_python': 
/usr/include/boost/python/converter/builtin_converters.hpp:122: undefined reference to `PyInt_FromLong' 
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libboost_python.so: undefined reference to `PyString_Size' 
+0

是否更改爲'find_package(PythonLibs 3 REQUIRED)'工作?您應該在嘗試之前刪除您的CMakeCache.txt。 – Fraser 2013-03-03 18:38:44

+0

builtin_converters.hpp:122錯誤消失了,但libboost_python.so:對'PyString_Size'的未定義引用仍然存在。 – 2013-03-03 18:59:58

+0

@Fraser:'find_package(PythonLibs 3 REQUIRED)'不會幫助您找到相應的Boost.Python庫。它僅查找Python「基本」語言庫。 – 2016-10-07 14:13:12

回答

5

這可能做的伎倆:

set(Python_ADDITIONAL_VERSIONS 3.2) 

find_package(Boost COMPONENTS system thread python-py32 REQUIRED) 
+1

這可能工作,例如在Ubuntu上。但是,如果您從Mac上的源代碼編譯Boost,則該庫僅稱爲「libboost_python3」。也可能發生在其他Linux發行版(例如Fedora)上。 – 2016-10-07 14:11:11

+0

@ user465139你會在哪裏設置? – blanche 2017-02-07 21:22:15