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

时间:2014-11-18 11:08:11

标签: c++ windows boost cmake boost-build

我根据文档在Windows(8.1)机器上构建了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

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

当我运行cmake时,它抱怨无法找到增强库 使用-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

我注意到以下差异:

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

任何想法如何让cmake找到实际文件而不重命名我必须匹配cmake的搜索格式的文件?

由于

1 个答案:

答案 0 :(得分:7)

注意:boost_thread-vc120-mt-1_56.lib导入库,允许与boost_thread-vc120-mt-1_56.dll进行动态关联,而libboost_thread-vc120-mt-s-1_56静态库({ {1}}字母表示它与CRT静态链接。)

您尝试构建的应用程序需要具有静态CRT的静态Boost库,因此您应该提供它们。要构建此类库,请使用appropriate parameters

调用s
b2