繁体   English   中英

CMake的VisualStudio找不到库

[英]CMake VisualStudio can not find library

对于为我的多媒体项目创建可执行文件的最后一步,我的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 Studio\2017\Community\Common7\IDE\CMakeLists.txt    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\LINK  1   

(是的,由glfw的CMake项目生成的文件称为“ glfw3dll.lib”)

我可以使用以下方法对每个库进行硬链接:

target_link_libraries(project ${PROJECT_SOURCE_DIR}/lib/win/glfw3dll.lib)

对于每个单个库,但我想不是让CMake让我写所有这些内容的...

当然,还需要将相应的库复制到最终的build和install目录中,以部署软件。 我如何告诉CMake做到这一点?

正确的方法是首先使用FindLibrary

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

然后使用它:

target_link_libraries(project ${glfw3dll_LIBRARY})

这有一些优点:

  • 您知道在CMake运行时是否正确找到了该库,
  • 找到变量库后,找到所有库后,平台的所有测试都将降级到设置中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM