【发布时间】:2018-12-21 14:26:01
【问题描述】:
对于为我的多媒体项目创建可执行文件的最后一步,我的 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 并不是让我编写所有这些...
当然也需要将相应的库复制到最终的构建和安装目录才能部署软件。我如何告诉 CMake 这样做?
【问题讨论】:
-
引用问题的second answer 解释了为什么
link_directories在您的情况下不起作用:此命令应该在之前add_executable生效。