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会缓存这些变量。我想我现在知道下一步该去哪里了,谢谢你把这件事弄清楚。(顺便说一句,如果你能回答这个问题,我很乐意接受)