gpt4 book ai didi

c++ - CMake Visual Studio 找不到库

转载 作者:行者123 更新时间:2023-12-02 10:24:06 26 4
gpt4 key购买 nike

对于为我的多媒体项目创建可执行文件的最后一步,我的 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”)

我可以使用以下方法对每个库进行硬链接(hard link):
target_link_libraries(project ${PROJECT_SOURCE_DIR}/lib/win/glfw3dll.lib)

对于每一个库,但我想 CMake 并不是让我写所有这些......

当然也需要将相应的库复制到最终的构建和安装目录来部署软件。我如何告诉 CMake 这样做?

最佳答案

正确的方法是使用 FindLibrary第一的:

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

然后使用它:
target_link_libraries(project ${glfw3dll_LIBRARY})

这有几个优点:
  • 你知道在 CMake 运行时是否正确找到了库,
  • 由于您有一个变量,因此当您找到所有库时,平台的所有测试都归入设置。
  • 关于c++ - CMake Visual Studio 找不到库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53886392/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com