在我的CMake文件中,当在Windows上构建时,我需要在自定义命令中使用lib.exe将多个静态库组合成一个。我尝试使用find_program命令来查找可执行文件:
find_program
find_program(LIB_EXE NAMES lib.exe)
但它总是将变量设置为未找到。找到lib.exe的正确方法是什么?[编辑]修复了NAME->NAMES,但程序仍然没有找到
kqqjbcuj1#
正确的关键字是可以省略的名称。尝试添加S或完全删除关键字。我想你实际上是在搜索程序NAME
NAME
rta7y2nd2#
检查构建目录中的文件CMakeCache.txt,并搜索“lib.exe”。在那里,您可以找到“lib.exe”可以通过变量${CMAKE_AR}定位。
${CMAKE_AR}
ndh0cuux3#
你可能需要像其他人提到的那样给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})
3条答案
按热度按时间kqqjbcuj1#
正确的关键字是可以省略的名称。尝试添加S或完全删除关键字。
我想你实际上是在搜索程序
NAME
rta7y2nd2#
检查构建目录中的文件CMakeCache.txt,并搜索“lib.exe”。
在那里,您可以找到“lib.exe”可以通过变量
${CMAKE_AR}
定位。ndh0cuux3#
你可能需要像其他人提到的那样给CMake一些提示。对于使用visual studio的用户,lib.exe位于编译器目录中。因此,添加以下行应该可以解决您的问题: