Cmake VisualStudio找不到库

CMake VisualStudio can not find library

本文关键字:找不到 VisualStudio Cmake      更新时间:2023-10-16

对于为我的多媒体项目创建可执行文件的最后一步,我在我的一个cmakefiles.txt

中有类似的东西
add_executable(project a.cpp a.h)
if(WIN32)
    link_directories(${PROJECT_SOURCE_DIR}/lib/win)
    target_link_libraries(project opengl32 glfw3dll OpenAL32 alut ogg vorbis vorbisenc vorbisfile)
else()
    link_directories(${PROJECT_SOURCE_DIR}/lib/linux)
    target_link_libraries(project gl glfw3 openal alut vorbis ogg vorbisenc vorbisfile)
endif()

/lib/win目录内部是我要链接到的所有库。

但是,每次告诉Cmake构建项目,我都会收到错误阅读:

Error   LNK1104 cannot open file 'glfw3dll.lib' C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDECMakeLists.txt    C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDELINK  1   

(是的,GLFW的CMAKE项目生成的文件称为" Glfw3dll.lib")

我可以使用:

与每个库进行硬链接
target_link_libraries(project ${PROJECT_SOURCE_DIR}/lib/win/glfw3dll.lib)

对于每个图书馆

当然,还需要将相应的库复制到最终构建中并安装目录以部署软件。我该如何告诉Cmake这样做?

正确的方法是首先使用FindLibrary

 find_library (glfw3dll_LIBRARY NAMES glfw3dll PATHS ${PROJECT_SOURCE_DIR}/lib/win)

然后使用它:

target_link_libraries(project ${glfw3dll_LIBRARY})

这有一些优点:

  • 您在CMAKE运行时间知道是否正确找到了库,
  • 由于您有一个变量,当您找到所有库时,所有平台的测试都会降级为设置。