首页 > 解决方案 > CMake find_library 在 MSVC 上找不到现有库

问题描述

我做了一个项目并尝试使用 CMake 在 GCC (Linux) 和 MinGW (Windows) 下构建它。现在我试图在 Visual Studio 2019 下做同样的事情(出于某种原因),似乎 VS 附带的 CMake 找不到随 MSVC 安装的库。

我正在使用一个脚本,不幸的是我在网上找不到了,所以我不能给你一个链接。但我试图找出导致问题的原因。所以,这里是代码:

if(MY_LIB_PATH)
  set(MYLIB_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()

find_library(MY_LIBRARY
  NAMES myLibrary
  HINTS
    ENV MY_ENV
    ${MYLIB_NO_DEFAULT_PATH_CMD}
  PATH_SUFFIXES lib lib/x64
  PATHS ${MY_LIB_PATH}
  DOC ""
)

(代码比这复杂得多,但这就是所有变量替换后的样子)

如果我不设置MY_LIB_PATH变量,它将找不到库(位于lib/x64MSVC 安装文件夹中的文件夹中)。但是当我这样调用 CMake 时:

cmake "-DMY_LIB_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" 

它“奇迹般地”找到了它。

是的,它可以工作,但是...... CMake 不是为了避免首先编写所有路径而设计的吗?此外,还有一个问题:我的项目中有很多这样的库,所有这些库都使用上面相同的代码进行查找,并且我必须多次编写所有路径,以便 CMake 可以找到它们。

要么我的 CMake 脚本的作者做错了什么,要么我安装了我的库,而不是 CMake 所期望的。

标签: cmakevisual-studio-2019

解决方案


推荐阅读