【问题标题】:Set include-path for header only library installed with conda为使用 conda 安装的仅标头库设置包含路径
【发布时间】:2018-12-27 16:26:21
【问题描述】:

最近有人建议我以包管理器的身份查看 conda。不幸的是,我没有成功找到如何让我的编译器找到一个安装了 conda 的仅头文件库?理想情况下,我希望根本不必手动指定编译器的路径。

(上下文是我来自 macOS 上的自制软件,它在正确的位置创建符号链接。显然这是 conda 避免的。但是,编译简单示例的简单方法会很好!)


示例

例如,如果我的代码是下面的代码。 注意:这个问题是通用的,与特定的包无关,我也不想再次手动指定我的特定虚拟环境。

#include <iostream>
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>

int main()
{
  xt::xarray<double> a
    {{1.0, 2.0, 3.0},
     {2.0, 5.0, 7.0},
     {2.0, 5.0, 7.0}};

  std::cout << a;
}

我已经使用

'安装'了这个库
conda create --name example
source activate example
conda install -c conda-forge xtensor-python

现在我只想编译

clang++ -std=c++14 test.cpp

请注意,我知道这是可行的:

clang++ -std=c++14 -I~/miniconda3/envs/example/include test.cpp

但我不认为这是需要的,因为:

  • 路径包含环境 (example)。
  • 这取决于系统。

【问题讨论】:

  • 如果有系统环境变量设置包含路径,可以在环境激活时设置
  • @darthbith 感谢您的回复。我想一个很大的缺陷是没有这样的环境变量。当然,我可以引入我自己的环境变量,比如${INCLUDEPATH}。如果我要这样做,我该如何根据虚拟环境进行设置?
  • @darthbith 很好,非常感谢。

标签: c++ conda include-path xtensor


【解决方案1】:

至少在 unix 系统上,一个解决方案是使用

clang++ -std=c++14 -I"${CONDA_PREFIX}"/include test.cpp

"${CONDA_PREFIX}" 指向当前 conda 环境的根目录。在这种情况下:

~/miniconda3/envs/example

【讨论】:

    【解决方案2】:

    我宁愿导出 CPATH or CPLUS_INCLUDE_PATH 变量以添加 ${CONDA_PREFIX}/include :它将从 conda 环境中解开编译过程(编译 test.cpp),从而允许您的编译过程具有可移植性。

    CPATH 如果存在此环境变量,则将其视为要添加到默认系统包含路径列表的分隔路径列表。分隔符是与平台相关的分隔符,在 PATH 环境变量中使用。

    C_INCLUDE_PATH、OBJC_INCLUDE_PATH、CPLUS_INCLUDE_PATH、OBJCPLUS_INCLUDE_PATH 这些环境变量指定了额外的路径,如 CPATH,仅在处理适当的语言时使用。

    使用https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=env#setting-environment-variables设置环境变量。

    $ conda env config vars set CPATH=${CONDA_PREFIX}/include:${CPATH}
    

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    猜你喜欢
    • 2016-09-03
    • 2018-01-22
    • 2018-10-10
    • 2023-03-29
    • 2014-07-09
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多