关于空cmake FIND宏的问题

Questions about empty cmake FIND macros

本文关键字:问题 FIND 于空 cmake      更新时间:2023-10-16

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

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

我的第一个问题是如何cmake甚至找到我的硬盘上的库,而FIND宏基本上是空的。更重要的问题是,为什么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步骤)。你的ffmpeg相关的值是由之前的cmake调用设置的,现在cmake打印它们。

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