关于空cmake FIND宏的问题

时间:2014-05-10 02:54:37

标签: 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_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

1 个答案:

答案 0 :(得分:1)

你的宏没有找到任何东西,它只打印来自CMakeCache.txt的值,这是cmake次调用(或GUI中的configure步骤)之间的持久存储。您的FFMPEG相关值是由之前的cmake调用设置的,现在cmake会打印它们。

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