我的高级目标是使用Visual Studio 2017在Windows 10上安装BGSlibrary,这需要对python进行提升。我使用cmake 3.9.0从源代码编译opencv和boost(1.64.0)。在BGSLIBRARY的cmake期间,我得到了
$ cmake -DBGS_PYTHON_SUPPORT=ON -DBOOST_ROOT="C:/Program Files/boost_1_64_0/" ..
-- BGSLIBRARY WITH PYTHON SUPPORT: ON
-- OpenCV library status:
-- version: 3.3.0
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.9/ Modules/FindBoost.cmake:1877 (message):
Unable to find the requested Boost libraries.
Boost version: 1.64.0
Boost include path: C:/Program Files/boost_1_64_0
Could not find the following Boost libraries:
boost_python
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
CMakeLists.txt:75 (find_package)
我在cmake findboost模块上看到了很多问题。好的,让我们从这里开始。
我运行了bootstrap.bat和.b2来生成构建提升
C:\ Program Files \ boost_1_64_0> b2 toolset = msvc-14.1 --with-python --user-config = user-config.jam
使用用户配置
import toolset : using ;
using msvc : 14.1 ;
using python
: 2.7 # Version
: C:\\Python27\\python.exe # Interpreter
: C:\\Python27\\include # inc dir
: C:\\Python27\\libs # link libs
: # conditions
;
我可以在这里看到python源
并且可以在Visual Studio 2017命令提示符中确认我使用python支持构建boost并且它成功找到所有目标。
我可以看到一堆" python" .lib文件在这里。阅读其他问题表明这就是它的发展方向。
但我似乎无法让cmake看到它。 我尝试将名称libboost_python更改为boost_python。我已经尝试过指向cmake -DBOOST_ROOT或-DBOOST_LIBRARYDIR(或非debg,-BOOST_LIBRARYDIR)。我已经尝试将lib目录添加到PATH。但似乎没有任何效果。这是一个cmake问题,一个不完整的升级安装或BGSLibrary的问题?
修改
要回答@utopia,有问题的CMakeList部分会读取
if(BGS_PYTHON_SUPPORT)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost REQUIRED COMPONENTS python)
find_package(PythonLibs REQUIRED)
message(STATUS "Boost library status:")
message(STATUS " version: ${Boost_VERSION}")
message(STATUS " libraries: ${Boost_LIBRARIES}")
message(STATUS " include path: ${Boost_INCLUDE_DIRS}")
message(STATUS "Python library status:")
message(STATUS " version: ${PYTHON_VERSION}")
message(STATUS " libraries: ${PYTHON_LIBRARIES}")
message(STATUS " include path: ${PYTHON_INCLUDE_DIRS}")
ENDIF()
这是否意味着.lib应该字面上命名为python.lib?没有其他字符或者boost_python.lib。这是具体的吗?
答案 0 :(得分:1)
@utopia带领我找到了正确的解决方案。 .lib需要字面上命名为boost_python.lib,不附加visual studio编译器版本,boost版本等。之后我能够成功构建,不需要cmake标志。