Как добавить библиотеки С++ (например, libjpeg-dev) в образ Windows Docker, чтобы CMake мог их обнаружить?

Я настраиваю док-контейнер Windows, чтобы иметь возможность скомпилировать проект CMake C++. Файлы CMake захватывают пакеты с помощью команды find_package() CMake. Например:

find_package(JPEG CONFIG REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(PNG CONFIG REQUIRED)
find_package(ZLIB CONFIG REQUIRED)

Теперь установить эти библиотеки в док-контейнер Linux было довольно просто, мне просто нужно было добавить строку в «CORE_PACKAGES». Вот пример того, как выглядит мой linux dockerfile.

ENV LANG=C.UTF-8 \
    PYTHONIOENCODING=UTF-8 \
    CORE_PACKAGES="\
        # ... other trivial packages omitted  
        libjpeg-dev \
        libpng-dev \
        libssl-dev \
        zlib1g-dev \
    "

# Install core dependencies & updates
RUN apt-get update && \
    apt-get upgrade && \
    apt-get install -y $CORE_PACKAGES && \
    update-ca-certificates

Я пытаюсь создать эквивалент этого фрагмента в файле докеров Windows. В моем док-файле Windows я использую диспетчер пакетов Windows под названием «Choco» для установки некоторых вещей в Windows, но в Choco нет таких вещей, как «libpng-dev» и «libjpeg-dev». Итак, мой вопрос: какова стандартная практика добавления библиотек C++ Dev в контейнер Windows Docker?


person vpaladino778    schedule 27.08.2019    source источник


Ответы (1)


Проведя гораздо больше исследований различных менеджеров пакетов C++, совместимых с Windows и Linux, я наткнулся на VcPkg и настоятельно рекомендую его другим, кто ищет менеджер пакетов c++.

Вот некоторые функции, которые я нашел особенно полезными

  • Совместимость с CMake
  • Простая установка с помощью скрипта, что упрощает добавление в контейнер докеров.
  • Совместимость с Windows, Linux и Mac
  • Тонны пакетов C++, и если они не существуют, вы можете открыть вопрос, чтобы добавить его, или вы можете реализовать его самостоятельно и открыть запрос на включение
  • Открытый исходный код

Единственным недостатком использования Vcpkg является то, что нет собственного способа выбрать более старую версию определенного пакета.

person vpaladino778    schedule 10.09.2019