Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake不';t将优化和调试库正确添加到VS项目中_C++_Visual Studio_Cmake - Fatal编程技术网

C++ CMake不';t将优化和调试库正确添加到VS项目中

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

我在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_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这解决了我的问题。请提出它作为答复,我将接受它。