前言
在Linux下fdk-aac有编译脚本,可以轻松的编译之。但是在Windows下木有,这边创建fdk-aac cmake工程使得fdk-aac能cmake跨平台编译。这里使用Windows下的MSVC编译器编译。
准备
下载fdk-aac源码(本文使用的版本是fdk-aac-2.0.1)
CMake工具(本文使用的版本是cmake-3.16.0-rc4-win64-x64)
CMake fdk-aac
创建CMakeLists.txt文件
在fdk-aac源码根目录下创建CMakeLists.txt文件,输入以下内容,具体细节已经注释的很清楚。
# A cmake file for compile fdk-aac
# Author: kaychan
# Mail: [email protected]
#
# fdk-aac download: http://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html
# fdk-aac version: fdk-aac-2.0.1
# cmake version: cmake-3.16.0-rc4-win64-x64
# Disable in-source builds to prevent source tree corruption.
if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "
FATAL: In-source builds are not allowed.
You should create a separate directory for build files.
")
endif()
cmake_minimum_required ( VERSION 3.0 )
# 声明工程
project ( fdk-aac )
set ( SOURCE_FILES )
# 遍历添加源码文件
foreach ( subdir
libAACdec libAACenc libArithCoding
libDRCdec
libFDK
libMpegTPDec libMpegTPEnc
libPCMutils
libSACdec libSACenc libSBRdec libSBRenc libSYS)
set ( incdir ${CMAKE_SOURCE_DIR}/${subdir}/include )
set ( srcdir ${CMAKE_SOURCE_DIR}/${subdir}/src )
# 指定包含目录
include_directories ( ${incdir} )
# 安装include头文件
install ( DIRECTORY ${incdir}/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include )
file ( GLOB srcfiles
${srcdir}/*.cpp
${srcdir}/*.h )
list ( APPEND SOURCE_FILES ${srcfiles} )
endforeach ()
# 编译/安装静态库
add_library ( fdk-aac STATIC ${SOURCE_FILES} )
install ( TARGETS fdk-aac ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
# 编译/安装动态库
# add_library ( fdk-aac SHARED ${SOURCE_FILES} )
# install ( TARGETS fdk-aac LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
创建build和fdkaac_sdk文件夹
build用于存放cmake的中间文件,fdkaac_sdk用于存放编译出来的fdk-aac库和头文件
打开CMake-GUI
添加fdk-aac源码目录和build目录,并指定安装目录宏CMAKE_INSTALL_PREFIX为fdkaac_sdk,如下图:
configure&generate&compile
配置正确后,点击configure,然后点击generate,使用对应编译器的VS版本open project,最后一如既往的编译安装即可在fdkaac_sdk生成想要的库和头文件。