加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows平台下 使用cmake 编译 fddk-aac源码

发布时间:2020-12-14 02:52:29 所属栏目:Windows 来源:网络整理
导读:1,cmake是一款跨平台的编译。转换工具。他可以把github上面的非vs代码转换成vs代码。 2,cmake下载 直接百度搜索关键字 cmake 即可找到官网下载。网址:www. cmake .org?我使用的版本时3.12.1 3,fkd-aac 是一款很好用的音频编码解码工具。可以把一帧裸流转换

1,cmake是一款跨平台的编译。转换工具。他可以把github上面的非vs代码转换成vs代码。

2,cmake下载 直接百度搜索关键字 cmake 即可找到官网下载。网址:www.cmake.org?我使用的版本时3.12.1

3,fkd-aac 是一款很好用的音频编码解码工具。可以把一帧裸流转换成aac格式。方便在网络上传输。

4,fkd-aac下载地址。https://github.com/mstorsjo/fdk-aac 我使用的是 2.0版本的源码。

5,编译过程:

首先在源码目录中创建一个CMakeLists.txt文件。

里面内容为:

?

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

set ( FDK_AAC_SOURCE_DIR F:/fdkaac/fdk-aac )


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
libArithCoding libDRCdec
libSACdec libSACenc
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} )

?

?

其中有两点需要注意:1,上面内容第四行中?set ( FDK_AAC_SOURCE_DIR F:/fdkaac/fdk-aac ) 后面的路径为自己fkd-aac源码的路径。比如我的是F:/fdkaac/fdk-aac。

2,由于版本不同foreach ( subdir?
libAACdec libAACenc libFDK?
libArithCoding libDRCdec?
libSACdec libSACenc?
libMpegTPDec libMpegTPEnc?
libPCMutils?
libSBRdec libSBRenc?
libSYS )?

这部分内容可能需要更改。具体更改方法是根据比对自己源码目录中lib开头的文件夹。需要做到源码中的lib开头的文件夹都要写入到 这部分里面。并且注意文件夹与文件夹之间的空格。

由于这个文件是本人复制别人的。所以第一次 cmake后 生成了 vs2015源码编译的时候会有很多头文件提示找不到。原因就是有几个新版本中增加的lib文件没包含。

6,进入cmake文件夹。在bin目录里打开 cmake-gui.exe。我的fkd-aac的源码文件目录是 :F:/fdkaac/fdk-aac。所以 在where is the source code 中输入此文件夹。下面的where to build the binaries.这里是存放cmake生成的vs2015工程的存放目录。我把这个目录设置成F:/fdkaac/vs2015fdkaac。如果目录不存在 会提示你是否创建一个。点同意就可以了。 然后 在下面找到Configure 按钮。会弹出一个需要生成哪个版本的vs.我的vs是2015.我选的是2015这个。还有一个1.4的数字。好像是编译器的版本号。然后再点击 Generate 稍等片刻即可生成vs源码。

进入生成vs的目录。使用自己的vs打开 编译。通过。。没有出现任何错误提示。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读