C++ CMake不';t将优化和调试库正确添加到VS项目中
我在CMake中有以下代码,用于为我拥有的项目查找调试和发布库:C++ CMake不';t将优化和调试库正确添加到VS项目中,c++,visual-studio,cmake,C++,Visual Studio,Cmake,我在CMake中有以下代码,用于为我拥有的项目查找调试和发布库: FIND_LIBRARY(MP4V2_LIBRARY_RELEASE libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Release Static (MT)") FIND_LIBRARY(MP4V2_LIBRARY_BEDUG libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Debug Static (MTd)") set(MP4V2_LIBRAR
FIND_LIBRARY(MP4V2_LIBRARY_RELEASE libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Release Static (MT)")
FIND_LIBRARY(MP4V2_LIBRARY_BEDUG libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Debug Static (MTd)")
set(MP4V2_LIBRARIES "optimized ${MP4V2_LIBRARY_RELEASE} debug ${MP4V2_LIBRARY_BEDUG}")
message(STATUS ${MP4V2_LIBRARIES})
当我运行CMake时,它会正确展开:
optimized D:/MyData/SourceCode/camm_mp4v2/bin/Windows-x64/Release Static (MT)/libmp4v2.lib debug D:/MyData/SourceCode/camm_mp4v2/bin/Windows-x64/Debug Static (MTd)/libmp4v2.lib
我将其添加到我的应用程序中,如下所示:
target_link_libraries(MyApp ${MP4V2_LIBRARIES})
当我为VS创建项目并尝试编译它时,出现以下错误:
cannot open file 'optimized D:\MyData\SourceCode\camm_mp4v2\bin\Windows-x64\Release Static (MT)\libmp4v2.lib debug D:\MyData\SourceCode\camm_mp4v2\bin\Windows-x64\Debug Static (MTd)\libmp4v2.lib.lib'
显然,CMake没有检测到优化和调试库
此代码有什么问题,我如何修复它 创建导入的
目标:
add_library(mp4v2 STATIC IMPORTED)
set_target_properties(mp4v2 PROPERTIES
IMPORTED_LOCATION_DEBUG ${MP4V2_LIBRARY_DEBUG}
IMPORTED_LOCATION_RELEASE ${MP4V2_LIBRARY_RELEASE})
target_link_libraries(MyApp mp4v2)
如果有任何标题,您也可以设置接口\u INCLUDE\u目录
属性。谢谢,请详细说明?为什么我的代码不起作用?我不能更改“Target_Link_Libraries”一行,因为还有其他几个目标(Linux等)准备了${MP4V2_Libraries},我不能更改它们。“optimized”和“debug”关键字对CMake来说毫无意义。我从这个答案中学到:啊,我被纠正了@Tsyvarev的答案是正确的。您希望为变量MP4V2_库
分配一个optimized
、${MP4V2_库{RELEASE}
、debug
列表,但将此列表括在双引号中。。。因此,变量的值不是列表,而是由4个空格分隔的单词组成的字符串。这正是您在message()
output中观察到的。删除双引号或用分号分隔单词代码>@Tsyvarev这解决了我的问题。请提出它作为答复,我将接受它。