Я бы хотел отправить пакет c ++ (https://github.com/modsim/cadet) как пакет anaconda с оболочкой python. Пакет зависит от hdf5, LAPACK и пакета sundials. Все они доступны в виде пакета anaconda, что делает его очень удобным .
В настоящее время я собираю пакет (без conda), используя следующий маленький скрипт:
#!bin/bash
export SUNDIALS_ROOT=~/anaconda3/include/sundials
cmake -DCMAKE_INSTALL_PREFIX="~/Dokumente/projects/pycadet/cadet" -DCMAKE_LIBRARY_PATH="~/anaconda3/lib" -DBLA_VENDOR=Intel10_64lp ../code/
make
make install
Я застрял над чем-то очень простым, но чтение всей документации и просмотр руководств на YouTube не помогают. Как я могу сделать этот код универсальным, используя conda-build? Я хотел бы установить пути к солнечным часам, mkl, hdf5 и т. Д. Таким образом, чтобы он работал в любой системе.
Если я правильно понял, я создаю пакет conda в моей системе, например linux64. Это включает вызов cmake в сценарии setup.sh. Но как система узнает, где все библиотеки расположены на другом компьютере (например, если кто-то захочет установить мой пакет с помощью conda install)? Например:
export SUNDIALS_ROOT = ~ / anaconda3 / include / sundials
эта строка, очевидно, работает только на моем компьютере или любом другом, на котором anaconda установлена в домашнем каталоге и называется anaconda3.
Любые намеки высоко ценятся. Я просматриваю примеры рецептов сборки conda и надеюсь найти подходящий пример, но не могу представить, что я единственный, кто пытается доставить оболочку Python для пакета c ++ с общими библиотеками.
EDIT
Я немного приблизился к тому, чего хочу достичь, используя следующие шаги:
Я добавил:
Конда Конфиг - дополнительные каналы Конда-Фордж
А потом отредактировал meta.yaml:
пакет:
имя: пикадет
версия: 3.1.2
build:
number: 0
source:
url: https://github.com/modsim/CADET/archive/v3.1.2.zip
requirements:
build:
- sundials
about:
home: https://github.com/modsim/CADET
license: GPL
summary: A package for numerical simulation of chromatography
Все требования загружаются автоматически, и все работает, пока не произойдет сбой make
. Build.sh:
#!bin/bash
#
# The build receipy for conda
#
#
#
#
# You can run build.sh with bash -x -e. The -x makes it echo each command that is run
# and the -e makes it exit whenever a command in the script returns nonzero exit status.
set -x -e
INCLUDE_PATH="${PREFIX}/include"
LIBRARY_PATH="${PREFIX}/lib"
CADET_PATH="${PREFIX}/cadet"
# get out of the work directory (contains downloaded cadet)
cd ..
# make the build directory (in source builds are prohibited)
mkdir build
# get into it
cd build
#export SUNDIALS_ROOT=${PREFIX}/include/sundials
cmake -DCMAKE_INSTALL_PREFIX="${CADET_PATH}" -DCMAKE_LIBRARY_PATH="${LIBRARY_PATH}"-DBLA_VENDOR=Intel10_64lp ${SRC_DIR} ../work/
make
make install
Есть подсказки?