在我的CMake文件中,在Windows上构建时,我需要在自定义命令中使用lib.exe将多个静态库合并为一个。我尝试使用find_program
命令来查找可执行文件:
find_program(LIB_EXE NAMES lib.exe)
但它始终将变量设置为未找到。找到lib.exe的正确方法是什么?
[编辑] 修复了名称>名称,但仍然找不到该程序
正确的关键字是可以省略的 NAMES。尝试添加 S 或完全删除关键字。
我认为您实际上是在搜索该程序NAME
检查构建目录中的文件 CMakeCache.txt,然后搜索"lib.exe"。
在那里你可以找到"lib.exe"可以通过变量${CMAKE_AR}
找到。
正如其他人提到的,您可能需要向 CMake 提供提示。对于使用Visual Studio的人来说,lib.exe在编译器目录中。因此,添加以下行应该可以解决您的问题:
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
find_program(LIB_EXE NAMES lib.exe PATHS "${MSVC_BIN_DIR}" NO_DEFAULT_PATH)
message (STATUS ${LIB_EXE})