我想将c ++软件包(https://github.com/modsim/cadet)作为带有蟒蛇包装的anaconda软件包提供。该软件包取决于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使此代码通用?我想以某种在任何系统上都可以使用的方式设置日di,mkl,hdf5等的路径。
如果我理解正确,则可以在系统上创建conda软件包,例如linux64。它涉及到setup.sh脚本中对cmake的调用。但是系统如何知道所有库在另一台计算机上的位置(例如,如果有人想使用conda install安装我的软件包)?例如:
export SUNDIALS_ROOT =〜/ anaconda3 / include / sundials
此行显然仅适用于我的计算机或主目录中安装了anaconda的任何其他计算机,并且名为anaconda3。
任何提示都将受到高度赞赏。我正在浏览conda构建配方示例,并希望找到一个合适的示例,但是我无法想象我是唯一尝试为带有共享库的c ++软件包提供python包装器的人。
编辑
我通过以下步骤更加接近了我想要实现的目标:
我添加了: conda config-添加通道conda-forge
然后编辑meta.yaml:
软件包: 名称:pycadet 版本: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
有任何提示吗?