From 3995ecce931a5c6f6e5098c9e1949d83bd2cab42 Mon Sep 17 00:00:00 2001 From: Yi Zhang Date: Mon, 26 May 2025 07:34:49 +0800 Subject: [PATCH] add dockerfile --- CMakeLists.txt | 12 +++++++++--- Dockerfile | 29 +++++++++++++++++++++++++++++ src/CMakeLists.txt | 8 -------- 3 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 Dockerfile delete mode 100644 src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f3f0aa2..642e2b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.15.2) # 设置工程名称 -project(stt VERSION 1.2 LANGUAGES CXX) +project(stt VERSION 1.4 LANGUAGES CXX) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) # CMake默认的安装路径 Windows下为C:/Program\ Files/${Project_Name} Linux/Unix下为/usr/local @@ -8,5 +11,8 @@ message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX}) # CMake默认的变异类型为空 message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) -# 添加源文件地址 -add_subdirectory(src/) \ No newline at end of file +aux_source_directory(src STT_SRC) + +add_executable(stt ${STT_SRC}) +set_target_properties(stt PROPERTIES CXX_STANDARD 11) +install(TARGETS stt RUNTIME DESTINATION sbin) \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..531b57b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# 载入动态库镜像 +FROM ubuntu:20.04 AS builder +# 创建工作目录 +WORKDIR /app +# 拷贝源代码 +COPY src /app/src +COPY CMakeLists.txt /app +# 编译主程序并链接动态库 +RUN apt-get update && apt-get install -y g++ make cmake +RUN mkdir build && cd build && cmake .. && make +# 分析依赖库 将所有需要的库全部拷贝待用 +RUN mkdir /app/dependencies +# 注意全部使用绝对路径 +RUN ldd /app/stt | grep "=>" | awk '{print $3}' | xargs -I {} cp --parents {} /app/dependencies +# 检查 /app/dependencies 目录的内容 +#RUN ls -l /app/dependencies + +FROM ubuntu:20.04 +# 创建工作目录 +WORKDIR /app +# 拷贝依赖库和可执行文件 +COPY --from=builder /app/dependencies/lib /lib +#COPY --from=builder /app/dependencies/usr /usr +COPY --from=builder /app/stt /usr/local/bin +# 设置环境变量 +ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib +ENV PATH=$PATH:/usr/local/bin +# 设置运行时执行文件 方便传递命令行参数 +ENTRYPOINT ["stt"] \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index d95aac9..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -aux_source_directory(. STT_SRC) - -add_executable(stt ${STT_SRC}) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") -set_target_properties(stt PROPERTIES CXX_STANDARD 11) -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) -install(TARGETS stt RUNTIME DESTINATION sbin) \ No newline at end of file