为 header 设置 include-path 仅使用 conda 安装的库
Set include-path for header only library installed with conda
我最近被建议检查 conda 作为包管理器。不幸的是,我没有成功找到如何让我的编译器找到安装了 conda 的 header-only 库?理想情况下,我根本不需要手动指定编译器的路径。
(上下文是我来自 macOS 上的 homebrew,它在正确的位置创建符号链接。显然这是 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;
}
我有 'installed' 图书馆使用
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
)。
- 它取决于系统。
至少在 unix 系统上,一个解决方案是使用
clang++ -std=c++14 -I"${CONDA_PREFIX}"/include test.cpp
从而"${CONDA_PREFIX}"
指向当前conda环境的root。在这种情况下:
~/miniconda3/envs/example
我宁愿导出 CPATH or CPLUS_INCLUDE_PATH 变量以添加 ${CONDA_PREFIX}/include :它会从 conda 环境中解开编译过程(编译 test.cpp),从而允许编译过程的可移植性.
CPATH
If this environment variable is present, it is treated as a delimited list of paths to be added to the default system include path list. The delimiter is the platform dependent delimiter, as used in the PATH environment variable.
C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH
These environment variables specify additional paths, as for CPATH, which are only used when processing the appropriate language.
$ conda env config vars set CPATH=${CONDA_PREFIX}/include:${CPATH}
我最近被建议检查 conda 作为包管理器。不幸的是,我没有成功找到如何让我的编译器找到安装了 conda 的 header-only 库?理想情况下,我根本不需要手动指定编译器的路径。
(上下文是我来自 macOS 上的 homebrew,它在正确的位置创建符号链接。显然这是 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;
}
我有 'installed' 图书馆使用
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
)。 - 它取决于系统。
至少在 unix 系统上,一个解决方案是使用
clang++ -std=c++14 -I"${CONDA_PREFIX}"/include test.cpp
从而"${CONDA_PREFIX}"
指向当前conda环境的root。在这种情况下:
~/miniconda3/envs/example
我宁愿导出 CPATH or CPLUS_INCLUDE_PATH 变量以添加 ${CONDA_PREFIX}/include :它会从 conda 环境中解开编译过程(编译 test.cpp),从而允许编译过程的可移植性.
CPATH If this environment variable is present, it is treated as a delimited list of paths to be added to the default system include path list. The delimiter is the platform dependent delimiter, as used in the PATH environment variable.
C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH These environment variables specify additional paths, as for CPATH, which are only used when processing the appropriate language.
$ conda env config vars set CPATH=${CONDA_PREFIX}/include:${CPATH}