对于为我的多媒体项目创建可执行文件的最后一步,我的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做到这一点?
答案 0 :(得分:0)
执行此操作的正确方法是先使用resid sidence ience rednce etc..
:
FindLibrary
然后使用它:
find_library (glfw3dll_LIBRARY NAMES glfw3dll PATHS ${PROJECT_SOURCE_DIR}/lib/win)
这有一些优点: