Anaconda 从本地C++;程序

Anaconda 从本地C++;程序,anaconda,conda,miniconda,conda-build,Anaconda,Conda,Miniconda,Conda Build,我试图构建(稍后上传)一个CONDA软件包,它包含了我在C++开发的自定义程序。 为了简化这个问题,我有一个meta.yaml: package: name: CoolName version: "1.0.0" source: path: ./source requirements: build: - make 以及以下build.sh: make 我这里有两个问题: 1) 我应该如何以及在何处复制由make编译产生的二进制文件,以便在环境激活时确实能够识别它?

我试图构建(稍后上传)一个CONDA软件包,它包含了我在C++开发的自定义程序。 为了简化这个问题,我有一个
meta.yaml

package:
  name: CoolName
  version: "1.0.0"

source:
  path: ./source

requirements:
  build:
    - make
以及以下
build.sh

make
我这里有两个问题:
1) 我应该如何以及在何处复制由
make
编译产生的二进制文件,以便在环境激活时确实能够识别它?
2) 我应该如何将g++指定为依赖项?我希望此软件包稍后可用于
linux-64
osx-64
。。。在构建过程中(在Makefile中),我只使用g++


编辑 我已修改生成脚本,使其具有:

make
mkdir -p $PREFIX/bin
cp my_binary $PREFIX/bin/my_binary
现在,
conda构建
成功了。但是,当我稍后尝试使用
conda install在本地安装程序包时——使用local
我得到:

Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.
但这不是真的,我的二进制文件没有安装在任何地方,也无法识别

  • 我应该如何以及在何处复制make编译的结果二进制文件,以便在环境激活时能够识别它
  • 正如您在编辑中提到的,请安装在
    ${PREFIX}

  • 我应该如何将g++指定为依赖项
  • 要使用conda提供的编译器(而不是系统编译器),请使用以下命令:

    要求:
    建造:
    -{{编译器('cxx')}
    
    我希望这个软件包以后可以用于linux-64和osx-64。。。在构建过程中(在Makefile中),我只使用g++

    注意:在Mac上,它将使用
    clang++
    ,而不是
    g++
    。确保Makefile尊重
    ${CXX}
    环境变量,而不是硬编码
    g++

    但是,当我稍后尝试使用
    conda install在本地安装程序包时——使用local
    我得到:

    Collecting package metadata (current_repodata.json): done
    Solving environment: done
    
    # All requested packages already installed.
    
    这很奇怪
    conda安装——使用本地CoolName
    可以执行您想要的操作。但这里有一些东西可以尝试:

    • 仔细检查您要将其安装到的环境的内容:

        conda list
      
    • 尝试安装到新环境:

        conda create -n my-new-env --use-local CoolName
      
    • 删除成功生成包之前可能创建的包的任何过时版本:


    …然后再次尝试运行
    conda install

    谢谢!我删除了所有内容,用我的程序构建了一个新的
    env
    ,它可以正常工作!我正在尝试将一个本地C++库转换成一个CONDA包,类似于您所做的。您是否可以分享您的流程/代码回购以供参考?