Windows環境下使用Cmake ndk編譯fdk-aac

來源:互聯網
上載者:User

標籤:des   android   style   blog   http   color   使用   io   

 一、廢話

最近學習,第一步就是編譯.我們需要編譯FFmpag,x264,fdk_aac,下面是x264,網上說的很多都是幾百年前的,我親測完美可用

還是那句話 我能力有限,但是我希望我寫的東西能夠讓更多的人能夠接受.我也是剛剛接觸.做一個記錄,也希望能夠對其他人有好處.
聯絡我可以直接評論,也可以加我QQ:11635423 

 

 二、乾貨 

 

 

  準備:1.fdk_aac的源碼  git clone https://android.googlesource.com/platform/external/aac

3.需要下載cmake 直接在cmd裡面就可以了,之前的FFmpeg和x264都是cygwin裡面的.現在不用.需要設定cmake環境變數,加入到path裡面

4.編譯指令碼.這個指令碼自己去理解吧.我也是一知半解--指令碼名稱:CMakeLists.txt

 

# source code: git clone https://android.googlesource.com/platform/external/aac
cmake_minimum_required ( VERSION 2.8 )

if (CMAKE_SYSTEM_NAME STREQUAL Android )
    if ( NOT CMAKE_SYSTEM_PROCESSOR )
        set ( CMAKE_SYSTEM_PROCESSOR    armeabi-v7a )
    endif ()
    if ( NOT CMAKE_SYSTEM_VERSION )
        set ( CMAKE_SYSTEM_VERSION      8 )
    endif ()
    if ( NOT NDK_TOOLCHAIN_VERSION) 
        set ( NDK_TOOLCHAIN_VERSION     4.8 )
    endif ()

    set ( ANDROID_NDK_ROOT $ENV{ANDROID_NDK_ROOT} )

    find_path ( TOOLCHAIN_ROOT bin PATHS ${ANDROID_NDK_ROOT}/toolchains/arm-linux-androideabi-${NDK_TOOLCHAIN_VERSION}/prebuilt/* )

    include ( CMakeForceCompiler )

    find_program ( CMAKE_C_COMPILER   arm-linux-androideabi-gcc PATHS ${TOOLCHAIN_ROOT}/bin )
    find_program ( CMAKE_CXX_COMPILER arm-linux-androideabi-g++ PATHS ${TOOLCHAIN_ROOT}/bin )
    find_program ( CMAKE_AR           arm-linux-androideabi-ar  PATHS ${TOOLCHAIN_ROOT}/bin )

    cmake_force_c_compiler      ( ${CMAKE_C_COMPILER} GNU )
    cmake_force_cxx_compiler    ( ${CMAKE_CXX_COMPILER} GNU )

    set ( CMAKE_SYSROOT         ${ANDROID_NDK_ROOT}/platforms/android-${CMAKE_SYSTEM_VERSION}/arch-arm  CACHE PATH "" )

    set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY )
    set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
    set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

endif ()

project ( fdk-aac )

if ( NOT INCLUDE_INSTALL_DIR )
    set ( INCLUDE_INSTALL_DIR include )
endif ()

if ( NOT ARCHIVE_INSTALL_DIR )
    set ( ARCHIVE_INSTALL_DIR lib/static )
endif ()

if ( NOT IS_DIRECTORY ${FDK_AAC_SOURCE_DIR} )
    message ( FATAL_ERROR "FDK_AAC_SOURCE_DIR=${FDK_AAC_SOURCE_DIR} is not a dir" )
endif ()

if ( CMAKE_SYSTEM_NAME STREQUAL Android )
    add_definitions (
        --sysroot=${CMAKE_SYSROOT}
        -fPIC
        -march=armv7-a
        -mfpu=vfpv3-d16
        -DANDROID
        -mhard-float
        -D_NDK_MATH_NO_SOFTFP=1
        -lm_hard )
endif ()

add_definitions (
    -fno-rtti
    -fno-exceptions )

set ( SOURCE_FILES )

foreach ( subdir
    libAACdec libAACenc libFDK
    libMpegTPDec libMpegTPEnc
    libPCMutils
    libSBRdec libSBRenc
    libSYS )

    set ( __inc_dir ${FDK_AAC_SOURCE_DIR}/${subdir}/include )

    include_directories ( ${__inc_dir} )
    install ( DIRECTORY ${__inc_dir}/ DESTINATION ${INCLUDE_INSTALL_DIR}/fdk-aac/ )

    file ( GLOB __src_files
        ${FDK_AAC_SOURCE_DIR}/${subdir}/src/*.cpp
        ${FDK_AAC_SOURCE_DIR}/${subdir}/src/*.h )
    list ( APPEND SOURCE_FILES ${__src_files} )
endforeach ()

add_library ( fdk-aac STATIC
    ${SOURCE_FILES} )

install ( TARGETS fdk-aac
    ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR} )

 

   三、編譯

這個的編譯相對簡單 ,只要下載cmake就可以了.直接cmake就可以了.

1.定位到編譯目錄

2.執行cmake 命令
cmake -G "MinGW Makefiles" -DCMAKE_SYSTEM_NAME=Andr
oid -DFDK_AAC_SOURCE_DIR="E:/soft/source/fdk_aac/aac" E:\qupai_code_eclipse\code
\ThirdParty\Build\fdk-aac -DCMAKE_MAKE_PROGRAM=E:\android-ndk-r9c\prebuilt\windo
ws\bin\make.exe

3.cmake --bulid . -- -j8 

注意:DFDK_AAC_SOURCE_DIR="你的fdk_aac的源碼地址" 

 E:\qupai_code_eclipse\code\ThirdParty\Build\fdk-aac ----這裡是你的CMakeLists.txt地址

DCMAKE_MAKE_PROGRAM=NDK的make地址

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.