CMake找不到boost [英] CMake doesn't find boost
问题描述
Windows 7. 64位。 CMake 2.8.10。
Windows 7. 64bit. CMake 2.8.10.
步骤:
- 下载boost: http://sourceforge.net/projects/boost/files/boost/1.51.0/ 开始 - >所有程序 - > Microsoft Visual Studio 2010-> Visual Studio Tools-> Visual Studio命令提示符(2010)
- 命令:
- download boost: http://sourceforge.net/projects/boost/files/boost/1.51.0/
- put it to C:\work\lib\boost_1_51_0-MT
- open "Start->All Programs->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio Command Prompt (2010)"
- command:
cd C:\work\lib\boost_1_51_0-MT
bootstrap.bat
bjam --toolset=msvc-10.0 --variant=release --build-type=complete -j 4 --with-regex --with-test --with-filesystem --with-date_time --with-random --with-system --with-thread --with-program_options --with-chrono --with-math stage link=static threading=multi runtime-link=static
- 命令:
set BOOST_ROOT=C:\work\lib\boost_1_51_0-MT
cmake M:\project
Unable to find the requested Boost libraries.
Boost version: 1.51.0
Boost include path: C:/work/lib/boost_1_51_0-MT
The following Boost libraries could not be found:
boost_system
boost_thread
boost_random
boost_chrono
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.
M:\project\CMakeLists.txt包含:(我需要静态链接boost)
M:\project\CMakeLists.txt contains: (i need to link boost statically)
...
set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON)
set(USE_STATIC_BOOST ON)
add_definitions(-DBOOST_THREAD_USE_LIB)
add_definitions(-DBOOST_ALL_NO_LIB)
find_package(Boost 1.48.0 COMPONENTS system thread random chrono REQUIRED)
...
这个CMakeLists.txt是旧的,并且在其他增压安装(由我,而不是我在过去,但接收丢失)。
This CMakeLists.txt is old and works on other boost installations (done by me and not me in past, but the recepies is lost).
已解决
Solved
set(Boost_USE_STATIC_LIBS ON)
b $ b
...现在CMake发现boost库!虽然我的set(USE_STATIC_BOOST ON)必须具有相同的效果,但它不会...
...now CMake finds boost libraries! Although my "set(USE_STATIC_BOOST ON)" must have the same effect, but it doesnt...
推荐答案
set(Boost_USE_STATIC_LIBS ON)
...现在CMake发现boost库!虽然我的CMakeLists.txt有设置(USE_STATIC_BOOST ON)
,它必须有相同的效果,但它不... ...
...now CMake finds boost libraries! Although my CMakeLists.txt has set(USE_STATIC_BOOST ON)
which must have the same effect, but it doesnt...
要使用 set(Boost_USE_STATIC_LIBS OFF)
,您需要添加:
if( WIN32 )
# Needed for boost to turn off autolinking for dynamic linking
add_definitions( -DBOOST_ALL_NO_LIB )
endif()
查看更多:
在Windows上将boost库与Boost_USE_STATIC_LIB关闭
这篇关于CMake找不到boost的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!