# 编译平台 FROM ubuntu:20.04 AS builder # 安装编译工具 RUN apt-get update && apt-get install -y g++ make cmake # 安装依赖库 RUN apt-get install -y libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev # 创建工作目录 WORKDIR /gctl # 1. 编译安装EEMD # 拷贝libeemd相关内容 COPY dep/libeemd /gctl/dep/libeemd # 编译安装libeemd RUN mkdir /gctl/dep/libeemd/build && cd /gctl/dep/libeemd/build && cmake .. && make && make install # 2. 编译安装netcdfcxx_legacy # 拷贝netcdfcxx_legacy相关内容 COPY dep/netcdfcxx_legacy /gctl/dep/netcdfcxx_legacy # 编译安装netcdfcxx_legacy RUN mkdir /gctl/dep/netcdfcxx_legacy/build && cd /gctl/dep/netcdfcxx_legacy/build && cmake .. && make && make install # 3. 拷贝partow模版文件 COPY dep/partow/include /usr/local/include # 将gctl源代码 COPY lib /gctl/lib COPY CMakeLists.txt . COPY config.h.in . COPY GCTLConfig.cmake.in . # 将CMake配置文件拷贝到系统路径 COPY dep/cmake /usr/local/lib/cmake # 编译gctl动态库 RUN mkdir build && cd build && cmake .. -DGCTL_DOCKER=ON && make && make install # 运行平台 FROM ubuntu:20.04 # 安装运行时必要依赖 RUN apt-get update && apt-get install -y libstdc++6 # 从构建阶段复制编译后的库和头文件 COPY --from=builder /usr/local/lib /usr/local/lib COPY --from=builder /usr/local/include /usr/local/include