cmake find_程序命令找不到lib.exe

cmake find_程序命令找不到lib.exe,cmake,Cmake,在我的CMake文件中,当在Windows上构建时,我需要在自定义命令中使用lib.exe将多个静态库合并为一个库。 我尝试使用find_program命令查找可执行文件: find_program(LIB_EXE NAMES lib.exe) 但它总是将变量设置为“未找到”。找到lib.exe的正确方法是什么 [编辑]固定名称->名称,但仍找不到程序正确的关键字是名称,可以省略。尝试添加或完全删除关键字 我想你实际上是在搜索程序名,你是对的,我看错了文档(我会更新问题)。但不幸的是,find

在我的CMake文件中,当在Windows上构建时,我需要在自定义命令中使用lib.exe将多个静态库合并为一个库。 我尝试使用
find_program
命令查找可执行文件:

find_program(LIB_EXE NAMES lib.exe)
但它总是将变量设置为“未找到”。找到lib.exe的正确方法是什么


[编辑]固定名称->名称,但仍找不到程序

正确的关键字是名称,可以省略。尝试添加或完全删除关键字


我想你实际上是在搜索程序名,你是对的,我看错了文档(我会更新问题)。但不幸的是,find_程序(LIB_EXE LIB.EXE)以及find_程序(LIB_EXE LIB)和find_程序(LIB_EXE NAMES LIB.EXE)也给出了not_found。听起来你必须添加一个提示或路径子句。是的,但确切的路径是什么。该程序是一个系统实用程序,我想应该由CMake找到。事实上,如果我直接使用lib.exe,自定义命令可以正常工作。但不确定这是否是最好的方法。请检查生成文件夹中的CMakeCache.txt。CMake可能已经找到了。我目前没有可用的Windows机器,但在我的Linux机器上,所有链接工具都位于其中。这提供了一个可以替代使用的CMAKE_*样式变量。有一个指向link.exe的CMAKE_*链接器变量,但我需要lib.exeIs
lib.exe
位于
PATH
环境变量中指定的目录下?
消息(“PATH:$ENV{PATH}”)
的输出是什么(位于
find_程序调用之前),以及哪个目录包含
lib.exe
?@Tsyvarev lib.exe不位于PATH下的目录中,但它与link.exe(${CMAKE_LINKER})位于同一目录中,因此CMAKE应该能够找到它:程序文件(x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64可能不是通过
find\u program
等方式检测到
CMAKE\u链接器
。(例如,它可以从注册表中获取,也可以从Visual Studio中使用的
MSBuild.exe
程序中请求)。因此,您需要向CMake提示要搜索的目录。您可以使用
CMAKE_LINKER
变量的提取目录部分,并使用该目录作为
find_program
@Tsyvarev的提示谢谢,这可能是最好的方法。不确定这种方法的未来证明如何,但这应该是可行的