Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 目标链接库和查找库之间的搜索路径有什么不同?_C_Cmake - Fatal编程技术网

C 目标链接库和查找库之间的搜索路径有什么不同?

C 目标链接库和查找库之间的搜索路径有什么不同?,c,cmake,C,Cmake,我有一个C库,它在CMake中包含以下依赖项: if (WIN32) target_link_libraries(my_library legacy_stdio_definitions.lib) target_link_libraries(my_library wsock32) else() ... endif() 这对于我的应用程序来说基本上是很好的,但我正在尝试一种不同的方法,要求库具有绝对路径。因此,切换到以下内容: if (WIN32) find_lib

我有一个C库,它在CMake中包含以下依赖项:

if (WIN32)
    target_link_libraries(my_library legacy_stdio_definitions.lib)
    target_link_libraries(my_library wsock32)
else()
    ...
endif()
这对于我的应用程序来说基本上是很好的,但我正在尝试一种不同的方法,要求库具有绝对路径。因此,切换到以下内容:

if (WIN32)
    find_library(LEGACY_LIB legacy_stdio_definitions.lib)
    find_library(WSOCK_LIB wsock32)
    # Do something with ${LEGACY_LIB} and ${WSOCK_LIB}
else()
    ...
endif()
令我惊讶的是,这不起作用。两个
find_库
s都失败,将变量设置为
NOTFOUND


我该如何解决这个问题?我的第一个猜测是,
find\u library
target\u link\u libraries
的查找位置不同,但我做了一些研究,无法找到它的查找位置。我遗漏了什么?

不知道您使用的是什么版本的cmake,但在页面的一半,它有一个编号列表1-6,其中列出了
find\u library
在未指定搜索路径的情况下正在搜索库的位置。这是针对v3.4的:@yano
find_库
docs不是我需要的,它已经找不到我想要的了。我需要
target\u link\u library
搜索的路径,以将这些路径添加到
find\u library
的搜索中。有意义吗?“目标链接库和查找库之间的搜索路径有什么区别?”——
target\u link\u libraries
中的搜索路径由链接器决定,只需将
target\u link\u libraries
的参数“馈送”到链接器。但在
find_库中的搜索仅由CMake执行。的确,CMake倾向于搜索与链接器相似的路径,但路径仍然不相同。搜索系统是个好主意,但我真的认为它没有多大帮助。我在安装目录中找到了lib<代码>MSVS/2019/Community/VC/Tools/MSVC/14.23.28105/lib/onecore/x64
。我通常希望我能得到比猜测目标的安装路径更一般的东西。我同意,这看起来不像你应该指定的路径。看起来像是在LIB env变量中搜索路径。如果使用Visual Studio,请打开开发人员提示符(开始-->Visual Studio-->Visual Studio工具,本机工具命令提示符)并输入“set”,它将告诉您LIB设置为什么。虽然我认为这对您的问题没有帮助。我不知道您使用的是什么版本的cmake,但在页面的一半,它有一个编号列表1-6,其中列出了
find\u library
在未指定搜索路径的情况下搜索库的位置。这是针对v3.4的:@yano
find_库
docs不是我需要的,它已经找不到我想要的了。我需要
target\u link\u library
搜索的路径,以将这些路径添加到
find\u library
的搜索中。有意义吗?“目标链接库和查找库之间的搜索路径有什么区别?”——
target\u link\u libraries
中的搜索路径由链接器决定,只需将
target\u link\u libraries
的参数“馈送”到链接器。但在
find_库中的搜索仅由CMake执行。的确,CMake倾向于搜索与链接器相似的路径,但路径仍然不相同。搜索系统是个好主意,但我真的认为它没有多大帮助。我在安装目录中找到了lib<代码>MSVS/2019/Community/VC/Tools/MSVC/14.23.28105/lib/onecore/x64
。我通常希望我能得到比猜测目标的安装路径更一般的东西。我同意,这看起来不像你应该指定的路径。看起来像是在LIB env变量中搜索路径。如果使用Visual Studio,请打开开发人员提示符(开始-->Visual Studio-->Visual Studio工具,本机工具命令提示符)并输入“set”,它将告诉您LIB设置为什么。虽然我认为这对你的问题没有帮助。