cmake找不到boost库,因为它查找错误的文件名

我已经根据文档在windows(8.1)机器上构build了boost(1.56)库,共享库和静态库。
它们都以下面的文件名格式出现在BOOST_ROOT/stage/lib目录中:

 boost_thread-vc120-mt-1_56.dll boost_thread-vc120-mt-1_56.lib boost_thread-vc120-mt-gd-1_56.dll boost_thread-vc120-mt-gd-1_56.lib 

(这只是线程库,所有其他库也使用相同的格式)

当我运行cmake时,它抱怨无法findboost库。
-DBoost_DEBUG=ON运行它显示它寻找不同的文件名:

 libboost_thread-vc120-mt-s-1_56; libboost_thread-vc120-mt-s; libboost_thread-mt-s-1_56; libboost_thread-mt-s; libboost_thread 

我注意到以下不同:

  • 实际文件的前缀是boost而不是cmake正在search的libboost
  • 实际文件的静态版本只有一个不同的文件扩展名(.lib而不是.dll),但cmake正在寻找-mt-s

任何想法如何让cmakefind实际的文件,而不重命名的文件,我必须匹配cmake的search格式?

谢谢

注意: boost_thread-vc120-mt-1_56.lib是一个允许动态链接boost_thread-vc120-mt-1_56.lib导入库,而libboost_thread-vc120-mt-s-1_56是一个静态库( s字母表示它也是静态的与CRT连接)。

您尝试构建的应用程序期望具有静态CRT的静态Boost库,因此您应该提供它们。 要建立这样的库,用适当的参数调用b2

 b2 variant=release link=static runtime-link=static stage