Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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 FIND宏的问题_C++_Ffmpeg_Cmake - Fatal编程技术网

C++ 关于空cmake FIND宏的问题

C++ 关于空cmake FIND宏的问题,c++,ffmpeg,cmake,C++,Ffmpeg,Cmake,我有一个宏,看起来像这样 MACRO(FFMPEG_FIND varname shortname headername) MESSAGE(STATUS "FFMPEG_${varname}_LIBRARIES: ${FFMPEG_${varname}_LIBRARIES}") MESSAGE(STATUS "FFMPEG_${varname}_INCLUDE_DIRS: ${FFMPEG_${varname}_INCLUDE_DIRS}") ENDMACRO(FFMPEG_FIN

我有一个宏,看起来像这样

MACRO(FFMPEG_FIND varname shortname headername)
    MESSAGE(STATUS "FFMPEG_${varname}_LIBRARIES: ${FFMPEG_${varname}_LIBRARIES}")
    MESSAGE(STATUS "FFMPEG_${varname}_INCLUDE_DIRS: ${FFMPEG_${varname}_INCLUDE_DIRS}")
ENDMACRO(FFMPEG_FIND)
这就是所谓的:

FFMPEG_FIND(LIBAVFORMAT avformat avformat.h)
FFMPEG_FIND(LIBAVDEVICE avdevice avdevice.h)
FFMPEG_FIND(LIBAVCODEC  avcodec  avcodec.h)
FFMPEG_FIND(LIBAVUTIL   avutil   avutil.h)
FFMPEG_FIND(LIBSWSCALE  swscale  swscale.h)  # not sure about the header to look for here.
这将为我们提供

-- FFMPEG_LIBAVFORMAT_LIBRARIES: F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-de
v/lib/avformat.lib
-- FFMPEG_LIBAVFORMAT_INCLUDE_DIRS: F:/Dev/Lib/ffmpeg-2.2.1
-- FFMPEG_LIBAVDEVICE_LIBRARIES: F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-de
v/lib/avdevice.lib
-- FFMPEG_LIBAVDEVICE_INCLUDE_DIRS: F:/Dev/Lib/ffmpeg-2.2.1
-- FFMPEG_LIBAVCODEC_LIBRARIES: F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-dev
/lib/avcodec.lib
-- FFMPEG_LIBAVCODEC_INCLUDE_DIRS: F:/Dev/Lib/ffmpeg-2.2.1
-- FFMPEG_LIBAVUTIL_LIBRARIES: F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-dev/
lib/avutil.lib
-- FFMPEG_LIBAVUTIL_INCLUDE_DIRS: F:/Dev/Lib/ffmpeg-2.2.1
-- FFMPEG_LIBSWSCALE_LIBRARIES: F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-dev
/lib/swscale.lib
-- FFMPEG_LIBSWSCALE_INCLUDE_DIRS: F:/Dev/Lib/ffmpeg-2.2.1
-- Configuring done
-- Generating done

我的第一个问题是,当FIND宏基本上为空时,cmake如何在我的硬盘上查找库。更重要的问题是,为什么
INCLUDE_DIRS
设置为
F:/Dev/Lib/ffmpeg-2.2.1
,这是一个甚至不存在的路径(F:/Dev/Lib中没有ffmpeg-2.2.1文件夹),因为它应该指向
F:/Dev/Lib/ffmpeg-20140507-git-4cdea92-win32-Dev/INCLUDE
宏找不到任何东西,它只打印
CMakeCache.txt
中的值,这是
cmake
调用(或GUI中的
configure
步骤)之间的持久存储。先前的
cmake
调用设置了与FFMPEG相关的值,现在cmake打印这些值


可以通过在生成目录中运行
cmake-DVAR=VALUE.
来更改缓存值。

宏没有找到任何内容,它只是从
CMakeCache.txt
打印值。您没有提供任何代码来确定这些值的来源。这就是我要寻找的答案。实际上,我不知道cmake会缓存这些变量。我想我现在知道下一步该去哪里了,谢谢你把这件事弄清楚。(顺便说一句,如果你能回答这个问题,我很乐意接受)