Browse Source

重构项目编译脚本

master
zhaohe 2 years ago
parent
commit
b42ab83388
  1. 66
      CMakeLists.txt
  2. 35
      CMakeListsAARCH64.cmake
  3. 7
      CMakeListsPC.cmake
  4. 25
      TODO.md
  5. 2
      buildtools
  6. 64
      cmakepc.cmake
  7. 33
      sh/envsetup.sh
  8. 11
      sh/envsetuppc.sh
  9. 68
      sh/packet.sh

66
CMakeLists.txt

@ -5,21 +5,13 @@ set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_INSTALL_PREFIX "./")
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/)
include(zcmake/zcmake.cmake) include(zcmake/zcmake.cmake)
project(app) project(app)
# ccacheC++ # ccacheC++
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
# BUILD_FOR_TEST_ON_PC == true, include cmakepc.cmake
if(BUILD_FOR_TEST_ON_PC)
include(cmakepc.cmake)
return()
endif()
# #
set(C_CPP_FLAGS "${C_CPP_FLAGS} ") set(C_CPP_FLAGS "${C_CPP_FLAGS} ")
set(C_CPP_FLAGS set(C_CPP_FLAGS
@ -77,40 +69,24 @@ set(DEP_LINK_LIBRARIES
# #
# curlpp curl # curlpp curl
) )
# set(PUBLIC_INCLUDE_DIRECTORIES ${PUBLIC_INCLUDE_DIRECTORIES}
# ./libs/curlpp/include) set(PUBLIC_LINK_DIRECTORIES ${PUBLIC_LINK_DIRECTORIES}
# ./libs/curlpp/lib)
#
zadd_executable_simple(
TARGET
app.out
SRC
src/main.cpp
src/service/device_io_service.cpp
src/service/device_io_service_mock.cpp
src/service/main_control_service.cpp
src/service/light_control_service.cpp
src/service/report_service.cpp
src/service/voiceprocess/beforeasr_voiceprocesser.cpp
src/service/voiceprocess/beforewakeup_voiceprocesser.cpp
src/service/voiceprocess/wakeup_processer.cpp
src/service/voiceprocess/audio_recoder_service.cpp
src/service/voiceprocess/audio_logging_service.cpp
# aiui
)
#
set(DEP_LINK_LIBRARIES ${DEP_LINK_LIBRARIES} pthread)
#
set(PUBLIC_INCLUDE_DIRECTORIES ${PUBLIC_INCLUDE_DIRECTORIES})
#
set(PUBLIC_LINK_DIRECTORIES ${PUBLIC_LINK_DIRECTORIES})
# BUILD_FOR_TEST_ON_PC == true, include cmakepc.cmake
if(BUILD_FOR_TEST_ON_PC)
#
# PC使README.md
#
include(CMakeListsPC.cmake)
return()
else()
#
# 使README.md
#
include(CMakeListsAARCH64.cmake)
return()
endif()
zadd_executable_simple(TARGET alsaplayer_main.out SRC
dep/zlinuxcomponents/alsaplayer/test_alsaplayer_main.cpp)
zadd_executable_simple(TARGET audio_recorder_main.out SRC
dep/zlinuxcomponents/audio/audio_recorder_main.cpp)
zadd_executable_simple(TARGET test_asr_main.out SRC
dep/zlinuxcomponents/aiui_ws/aiui_main.c)
zadd_executable_simple(
TARGET test_smart_soundbox_player.out SRC
dep/zlinuxcomponents/alsaplayer/test_smart_soundbox_player.cpp)
zadd_executable_simple(
TARGET test_H8922S_gps_info_reader.out SRC
src/test/test_H8922S_gps_info_reader.cpp
src/service/H8922S_gps_Info_reader.cpp)

35
CMakeListsAARCH64.cmake

@ -0,0 +1,35 @@
#
zadd_executable_simple(
TARGET
app.out
SRC
src/main.cpp
src/service/device_io_service.cpp
src/service/device_io_service_mock.cpp
src/service/main_control_service.cpp
src/service/light_control_service.cpp
src/service/report_service.cpp
src/service/voiceprocess/beforeasr_voiceprocesser.cpp
src/service/voiceprocess/beforewakeup_voiceprocesser.cpp
src/service/voiceprocess/wakeup_processer.cpp
src/service/voiceprocess/audio_recoder_service.cpp
src/service/voiceprocess/audio_logging_service.cpp
# aiui
)
zadd_executable_simple(TARGET alsaplayer_main.out SRC
dep/zlinuxcomponents/alsaplayer/test_alsaplayer_main.cpp)
zadd_executable_simple(TARGET audio_recorder_main.out SRC
dep/zlinuxcomponents/audio/audio_recorder_main.cpp)
zadd_executable_simple(TARGET test_asr_main.out SRC
dep/zlinuxcomponents/aiui_ws/aiui_main.c)
zadd_executable_simple(
TARGET test_smart_soundbox_player.out SRC
dep/zlinuxcomponents/alsaplayer/test_smart_soundbox_player.cpp)
zadd_executable_simple(
TARGET test_H8922S_gps_info_reader.out SRC
src/test/test_H8922S_gps_info_reader.cpp
src/service/H8922S_gps_Info_reader.cpp)

7
CMakeListsPC.cmake

@ -0,0 +1,7 @@
zadd_executable_simple(TARGET test_aiui_service.out SRC
dep/zlinuxcomponents/aiui_ws/test_aiui_service.cpp)
zadd_executable_simple(
TARGET test_H8922S_gps_info_reader.out SRC
src/test/test_H8922S_gps_info_reader.cpp
src/service/H8922S_gps_Info_reader.cpp)

25
TODO.md

@ -7,19 +7,20 @@
6. 完善aiui_service库 OK 6. 完善aiui_service库 OK
7. 将aiui的配置,设备ID的配置,唤醒词的配置,是否记录语音的配置导出,通过config.hpp进行配置 OK 7. 将aiui的配置,设备ID的配置,唤醒词的配置,是否记录语音的配置导出,通过config.hpp进行配置 OK
8. 使用最新的黑板进行测试 8. 使用最新的黑板进行测试
5. 烧录stm32程序,测试主机和stm32之间的通信
9. 重构工程的Cmake文件,和iflytool.sh文件
10. 将AIUI的配置写活,在飞书中添加相关第三方服务使用说明手册和注意事项
12. 创建一个aiui的项目,专门用于工程中的测试代码使用,并修改其配置,添加注释,写好使用时应该参考的文档。
9. 烧录stm32程序,测试主机和stm32之间的通信
10. 重构工程的Cmake文件,和iflytool.sh文件
11. 将AIUI的配置写活,在飞书中添加相关第三方服务使用说明手册和注意事项 OK
12. 创建一个aiui的项目,专门用于工程中的测试代码使用,并修改其配置,添加注释,写好使用时应该参考的文档。 OK
6. 编写内核编译说明,和具体项目的内核编译说明
1. 打包最终包操作系统,为其增加自动保存网卡的功能,去掉内核中的这个功能。
2. 编写导出文件系统方案和注意事项。
3. 实现一份通用的文件系统,而非灯杆项目专用文件系统。
12. 设备开机时,自动打开
13. 对当前这个版本的内核写应用使用说明
14. 设备ID
15. 尝试加入降噪,AGC功能。
13. 编写内核编译说明,和具体项目的内核编译说明
14. 打包最终包操作系统,为其增加自动保存网卡的功能,去掉内核中的这个功能。
15. 编写导出文件系统方案和注意事项。
16. 实现一份通用的文件系统,而非灯杆项目专用文件系统。
17. 设备开机时,自动打开
18. 对当前这个版本的内核写应用使用说明
19. 设备ID
20. 尝试加入降噪,AGC功能。
------------------------------------------------------------------- -------------------------------------------------------------------

2
buildtools

@ -1 +1 @@
Subproject commit 2c5fa9ee781af8c21d16ecaf50bfbab8ba0e137b
Subproject commit 45b06ce5325ab6528de930d9b579ae447e12c26f

64
cmakepc.cmake

@ -1,64 +0,0 @@
#
set(C_CPP_FLAGS "${C_CPP_FLAGS} ")
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable"
)
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable"
)
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Werror=return-type -Werror=parentheses -Wfatal-errors -Wno-comment"
)
set(C_CPP_FLAGS "${C_CPP_FLAGS} -Wno-format-overflow")
set(C_CPP_FLAGS "${C_CPP_FLAGS} -O0 -g3 -fPIC -Wall")
# C
set(CMAKE_C_FLAGS "${C_CPP_FLAGS}")
message("CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}")
# CPP
set(CMAKE_CXX_FLAGS "${C_CPP_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pessimizing-move -Wno-reorder")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
message("PROJECT_NAME: ${PROJECT_NAME}")
message("PUBLIC_LINK_DIRECTORIES: ${PUBLIC_LINK_DIRECTORIES}")
message("PUBLIC_INCLUDE_DIRECTORIES: ${PUBLIC_INCLUDE_DIRECTORIES}")
#
include(dep/iflytopcpp/module.cmake)
include(dep/asio1.12.2/module.cmake)
include(dep/websocketpp/module.cmake)
include(dep/zservice_container/module.cmake)
include(dep/zwebservice/module.cmake)
include(dep/zlinuxcomponents/alsaplayer/module.cmake)
include(dep/zlinuxcomponents/rootfs_auto_update/module.cmake)
include(dep/zlinuxcomponents/mycroft_precise/module.cmake)
include(dep/zlinuxcomponents/audio/module.cmake)
include(dep/zlinuxcomponents/aiui_ws/module.cmake)
#
set(DEP_LINK_LIBRARIES
${DEP_LINK_LIBRARIES}
# ffmpeg
avcodec
avdevice
avfilter
avformat
avutil
swresample
swscale
m
# sys
asound
pthread
#
# curlpp curl
)
zadd_executable_simple(TARGET test_aiui_service.out SRC
dep/zlinuxcomponents/aiui_ws/test_aiui_service.cpp)
zadd_executable_simple(
TARGET test_H8922S_gps_info_reader.out SRC
src/test/test_H8922S_gps_info_reader.cpp
src/service/H8922S_gps_Info_reader.cpp)

33
sh/envsetup.sh

@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
# 全局变量 # 全局变量
LIBSDIR=${PROJECT_PATH}/libs/
# Config # Config
CONFIG_SUPPORT_ALSA=true CONFIG_SUPPORT_ALSA=true
@ -8,14 +7,6 @@ CONFIG_SUPPORT_FFMPEG=true
# Code Begin # Code Begin
cd ${PROJECT_PATH}/build cd ${PROJECT_PATH}/build
# 下载cmake
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/cmake-3.13.0-Linux-x86_64.tar.gz"
rm -rf cmake-3.13.0-Linux-x86_64
tar -xvf cmake-3.13.0-Linux-x86_64.tar.gz
mv cmake-3.13.0-Linux-x86_64 cmake
CMAKE_BIN=${PROJECT_PATH}/build/cmake/bin/cmake
# 下载依赖库 # 下载依赖库
# CONFIG_SUPPORT_ALSA # CONFIG_SUPPORT_ALSA
@ -25,8 +16,8 @@ if [ "$CONFIG_SUPPORT_ALSA" = true ]; then
rm -rf ${LIBSDIR}/alsa rm -rf ${LIBSDIR}/alsa
rm -rf libasound2_dev1.1.3-5ubuntu0.6 rm -rf libasound2_dev1.1.3-5ubuntu0.6
tar -xvf libasound2_dev1.1.3-5ubuntu0.6.tar.gz
tar -xvf libz.tar.gz
tar -xvf libasound2_dev1.1.3-5ubuntu0.6.tar.gz >/dev/null
tar -xvf libz.tar.gz >/dev/null
mkdir -p ${LIBSDIR}/alsa/pkgconfig/ mkdir -p ${LIBSDIR}/alsa/pkgconfig/
mkdir -p ${LIBSDIR}/alsa/include/sys/ mkdir -p ${LIBSDIR}/alsa/include/sys/
@ -48,25 +39,11 @@ fi
if [ "$CONFIG_SUPPORT_FFMPEG" = true ]; then if [ "$CONFIG_SUPPORT_FFMPEG" = true ]; then
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/ffmpeg-4.1.10-aarch64-20230301.tar.gz" wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/ffmpeg-4.1.10-aarch64-20230301.tar.gz"
rm -rf ${LIBSDIR}/ffmpeg rm -rf ${LIBSDIR}/ffmpeg
tar -xvf ffmpeg-4.1.10-aarch64-20230301.tar.gz
tar -xvf ffmpeg-4.1.10-aarch64-20230301.tar.gz >/dev/null
mv ffmpeg-4.1.10-aarch64-20230301 ${LIBSDIR}/ffmpeg mv ffmpeg-4.1.10-aarch64-20230301 ${LIBSDIR}/ffmpeg
PUBLIC_LINK_DIRECTORIES="${PUBLIC_LINK_DIRECTORIES};${LIBSDIR}/ffmpeg/lib" PUBLIC_LINK_DIRECTORIES="${PUBLIC_LINK_DIRECTORIES};${LIBSDIR}/ffmpeg/lib"
PUBLIC_INCLUDE_DIRECTORIES="${PUBLIC_INCLUDE_DIRECTORIES};${LIBSDIR}/ffmpeg/include" PUBLIC_INCLUDE_DIRECTORIES="${PUBLIC_INCLUDE_DIRECTORIES};${LIBSDIR}/ffmpeg/include"
fi fi
echo "PUBLIC_LINK_DIRECTORIES=${PUBLIC_LINK_DIRECTORIES}"
echo "PUBLIC_INCLUDE_DIRECTORIES=${PUBLIC_INCLUDE_DIRECTORIES}"
# 构造build/build.sh
echo "${CMAKE_BIN} ../ \\" >${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DPUBLIC_LINK_DIRECTORIES='${PUBLIC_LINK_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DPUBLIC_INCLUDE_DIRECTORIES='${PUBLIC_INCLUDE_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh
chmod +x ${PROJECT_PATH}/build/build.sh
#
# BUILDFORPC
#
# 构造buildpc/build.sh
echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true \\" >${PROJECT_PATH}/buildpc/build.sh
chmod +x ${PROJECT_PATH}/buildpc/build.sh
CROSS_TOOLCHAIN_C_COMPILER=aarch64-linux-gnu-gcc
CROSS_TOOLCHAIN_CXX_COMPILER=aarch64-linux-gnu-g++

11
sh/envsetuppc.sh

@ -1,11 +0,0 @@
cd ${PROJECT_PATH}/buildpc
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/cmake-3.13.0-Linux-x86_64.tar.gz"
rm -rf cmake-3.13.0-Linux-x86_64
tar -xvf cmake-3.13.0-Linux-x86_64.tar.gz
mv cmake-3.13.0-Linux-x86_64 cmake
CMAKE_BIN=${PROJECT_PATH}/buildpc/cmake/bin/cmake
# 构造buildpc/build.sh
echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true " >${PROJECT_PATH}/buildpc/build.sh
chmod +x ${PROJECT_PATH}/buildpc/build.sh

68
sh/packet.sh

@ -1,75 +1,13 @@
#!/bin/bash #!/bin/bash
# #
# wget_and_unzip 解压后的文件名 url # wget_and_unzip 解压后的文件名 url
# #
function wget_and_unzip() {
# 下载压缩包,解压,并删除压缩包
# cd $PACKET_DIR/
mkdir -p $PROJECT_PATH/.cache
cd $PROJECT_PATH/.cache
# ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220519.tar.gz
wget -c $2
tar -xvf $(basename $2)
mv $PROJECT_PATH/.cache/$1 $PACKET_DIR/
}
function wget_and_cpy() {
# 下载压缩包,解压,并删除压缩包
# cd $PACKET_DIR/
mkdir -p $PROJECT_PATH/.cache
cd $PROJECT_PATH/.cache
wget -c $1
cp $PROJECT_PATH/.cache/$(basename $1) $PACKET_DIR/
}
set -e
set -x
export PROJECT_PATH=$(pwd)
source ${PROJECT_PATH}/build/buildenv
#打包目录
PACKET_DIR=$PROJECT_PATH/out/app
# 删除打包目录,重新打包
rm -rf ${PACKET_DIR}
mkdir -p ${PACKET_DIR}
########################################################################################
################################根据需要修改下面的内容即可##################################
########################################################################################
#1. 编译
cd $PROJECT_PATH/build
# ./build.sh && make -j8 && make install
#2.打包APP
cp $PROJECT_PATH/build/app/*.out $PACKET_DIR/
#3.3 打包webapp
cp -rf $PROJECT_PATH/webapp $PACKET_DIR/
#4 拷贝配置文件
cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/
#################################################################### ####################################################################
########################打包自定义的东西############################## ########################打包自定义的东西##############################
#################################################################### ####################################################################
# 下载唤醒词模型 # 下载唤醒词模型
wget_and_unzip xiaomaoxiaomao ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220609.tar.gz
wget_and_unzip_to_packet_dir xiaomaoxiaomao ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220609.tar.gz
# 下载唤醒词引擎 # 下载唤醒词引擎
wget_and_unzip precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz
wget_and_unzip_to_packet_dir precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz
# 下载唤醒词语音 # 下载唤醒词语音
wget_and_cpy 192.168.1.2:8021/manufacturer_mycroft/hotworld/xiaomaoxiaomao/test_xiaomaoxiaomao.wav
####################################################################
####################################################################
#5 打包
cur_date="$(date +%Y%m%d)"
cd $PACKET_DIR/../
tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz app
cp ${PACKET_DIR}_${cur_date}.tar.gz ${PACKET_DIR}.tar.gz
echo "Brief:"
echo "generate ${PACKET_DIR}_${cur_date}.tar.gz..................."
echo "generate ${PACKET_DIR}.tar.gz..................."
wget_and_cpy_to_packet_dir 192.168.1.2:8021/manufacturer_mycroft/hotworld/xiaomaoxiaomao/test_xiaomaoxiaomao.wav
Loading…
Cancel
Save