为什么 cmake 选错了库?
why cmake pick the wrong library?
我的 cmake 中有这一行来选择 glog 库:
find_library(GLOG_LIBRARY libglog $ENV{GLOG_DIR}/x64/Release)
message(${GLOG_LIBRARY})
在发布文件夹中我有这些文件:
03/03/2015 15:00 308,736 libglog.dll
03/03/2015 15:00 64,998 libglog.exp
03/03/2015 15:00 104,884 libglog.lib
03/03/2015 15:00 3,248,128 libglog.pdb
但是当我 运行 cmake 时,我可以看到 GLOG_LIBRARY 设置为 libglog_static.lib
为什么cmake 得到错误的库?
好的,所以问题在于很可能是在第一次执行脚本后更改了使用提示的代码。 CMake 默认缓存其标准函数的大部分值。
find
例程默认首先检查变量是否存在于缓存中,因此即使您更改代码,它也可能看起来不起作用。确实需要在尝试新版本之前手动清除缓存,或者如果配置以某种方式更改 - 例如使用了一些更改版本或更改解析过程的标志 - 如果变量的名称相同,它将从缓存中提取。
文档中描述了搜索过程和参数:http://www.cmake.org/cmake/help/v3.0/command/find_library.html
我的 cmake 中有这一行来选择 glog 库:
find_library(GLOG_LIBRARY libglog $ENV{GLOG_DIR}/x64/Release)
message(${GLOG_LIBRARY})
在发布文件夹中我有这些文件:
03/03/2015 15:00 308,736 libglog.dll
03/03/2015 15:00 64,998 libglog.exp
03/03/2015 15:00 104,884 libglog.lib
03/03/2015 15:00 3,248,128 libglog.pdb
但是当我 运行 cmake 时,我可以看到 GLOG_LIBRARY 设置为 libglog_static.lib
为什么cmake 得到错误的库?
好的,所以问题在于很可能是在第一次执行脚本后更改了使用提示的代码。 CMake 默认缓存其标准函数的大部分值。
find
例程默认首先检查变量是否存在于缓存中,因此即使您更改代码,它也可能看起来不起作用。确实需要在尝试新版本之前手动清除缓存,或者如果配置以某种方式更改 - 例如使用了一些更改版本或更改解析过程的标志 - 如果变量的名称相同,它将从缓存中提取。
文档中描述了搜索过程和参数:http://www.cmake.org/cmake/help/v3.0/command/find_library.html