MOBILE_FFMPEG_BUILD_DATE 在哪?

最近在看 mobile-ffmpeg 的源码,在 mobileffmpeg.c 看到一个名为 MOBILE_FFMPEG_BUILD_DATE 的宏,但是在 mobileffmpeg.h 头文件中没有看到相关定义,考虑是不是定义到其他头文件了,那就 grep 一下

grep -r MOBILE_FFMPEG_BUILD_DATE

让我奇怪的是,还是只有mobileffmpg.c 出现了这个宏:

mobileffmpeg.c:    sprintf(buildDate, "%d", MOBILE_FFMPEG_BUILD_DATE);

我还不信了嘞, cd 到上一层目录,再次 grep,直到到根目录,发现了2个地方出现了这个宏:

Application.mk:APP_CFLAGS := -O3 -DANDROID -DMOBILE_FFMPEG_BUILD_DATE=20200104 -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable

mobileffmpeg.c:    sprintf(buildDate, "%d", MOBILE_FFMPEG_BUILD_DATE);

看来是在编译的时候通过-D参数添加的宏定义。

翻看未编译的mobile-ffmpeg源码,然而并没有Application.mk 文件,想到这个文件可能是在编译Android版本的时候生成的。于是去看看android.sh 文件,发现了这个函数:

build_application_mk() {
    if [[ ! -z ${MOBILE_FFMPEG_LTS_BUILD} ]]; then
        local LTS_BUILD_FLAG="-DMOBILE_FFMPEG_LTS "
    fi

    if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]]; then
        local APP_STL="c++_shared"
    else
        local APP_STL="none"

        ${SED_INLINE} 's/c++_shared //g' ${BASEDIR}/android/jni/Android.mk 1>>${BASEDIR}/build.log 2>&1
    fi

    local BUILD_DATE="-DMOBILE_FFMPEG_BUILD_DATE=$(date +%Y%m%d 2>>${BASEDIR}/build.log)"

    rm -f ${BASEDIR}/android/jni/Application.mk

    cat > "${BASEDIR}/android/jni/Application.mk" << EOF
APP_OPTIM := release

APP_ABI := ${ANDROID_ARCHITECTURES}

APP_STL := ${APP_STL}

APP_PLATFORM := android-${API}

APP_CFLAGS := -O3 -DANDROID ${LTS_BUILD_FLAG}${BUILD_DATE} -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable

APP_LDFLAGS := -Wl,--hash-style=both
EOF
}

这个函数生成了Applicationo.mk, 动态添加了BUILD_DATE

 

备忘:gcc的-D,-w,-W,-Wall,-O3这些参数的意义

一、-D

其意义是添加宏定义,这个很有用。

当你想要通过宏控制你的程序,不必傻乎乎的在程序里定义,然后需要哪个版本,去修改宏。

只需要在执行gcc的时候,指定-D,后面跟宏的名称即可。

示例:

gcc test.c -o test -D OPEN_PRINTF_DEBUG

或者gcc test.c -o test -DOPEN_PRINTF_DEBUG

两者都是可以的。

二、-w

关闭所有警告信息

三、-W和-Wall

开启所有警告,一般一起使用。

四、-O3

O是大写字母O,不是数字0哦。

意思是开启编译优化,等级为三。

reference:
https://blog.csdn.net/yuhengyue/article/details/78626102

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值