小编fer*_*rgu的帖子

autoconf:设置 AC_CHECK_LIB 编译器标志

我正在尝试设置我的项目以使用 autotools 构建系统进行分发。但是,当涉及到包含一些额外的库时,我遇到了问题。

我的代码依赖于几个库:

  • 我写的一个(我会叫 libfoo)

  • 一个是第三方(我将称之为 libbar)

  • Eigen3(这只是头文件)

这些都已经编译并安装在我的 $HOME 目录中。我不需要将它们构建为这个项目的一部分。

我需要的标志是

-std=c++11 (Got this taken care of)
Run Code Online (Sandbox Code Playgroud)

-I/path/to/include/libfoo (or libbar, or Eigen3)
Run Code Online (Sandbox Code Playgroud)

-L/path/to/lib/ (Where libfoo and libbar reside)
Run Code Online (Sandbox Code Playgroud)

-lfoo
Run Code Online (Sandbox Code Playgroud)

编译和链接 libfoo 和 libbar

问题是我想设置检查 libfoo 和 libbar 及其标头的存在(我已经检查了 Eigen3 设置)。问题是像 AC_CHECK_HEADERS 和 AC_CHECK_LIB 这样的宏似乎不想包含所需的 CPPFLAGS 或 LDFLAGS,无论我如何尝试定义它们,因此配置步骤失败。

AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([libfoo/foo.h], , [echo "Did not find libfoo headers"; exit -1])
AC_LANG_POP([C++])
Run Code Online (Sandbox Code Playgroud)

阅读 config.log 显示 configure 正在尝试使用

g++ -std=c++11 (other flags...)
Run Code Online (Sandbox Code Playgroud)

但由于缺少上述标志而失败(错误是“找不到 Eigen3/dense”或类似的,表明缺少 -I 标志)

我是 autotools 的新手,所以我可能会遗漏一些明显的东西,但我已经阅读了大量的帮助和手册,但到目前为止还没有弄清楚我需要做什么来设置它。 …

c++ automake autoconf autotools

5
推荐指数
1
解决办法
1972
查看次数

取带有掩码元素的 numpy ndarray 的平均值

我有一个从实验中获取的 MxN 值数组。其中一些值无效并设置为 0 以指示此类情况。我可以使用构造有效/无效值的掩码

mask = (mat1 == 0) & (mat2 == 0)
Run Code Online (Sandbox Code Playgroud)

它产生一个 MxN 布尔数组。应该注意的是,屏蔽位置并不完全遵循矩阵的列或行 - 因此简单地裁剪矩阵不是一个选择。

现在,我想沿数组的一个轴取平均值(EG 最终得到一个 1xN 数组),同时在平均值计算中排除那些无效值。直觉上我以为

 np.mean(mat1[mask],axis=1)
Run Code Online (Sandbox Code Playgroud)

应该这样做,但是该mat1[mask]操作会生成一个一维数组,它似乎只是masktrue 的元素 - 当我只想要数组的一维上的平均值时,这没有帮助。

有没有“python-esque”或numpy的方法来做到这一点?我想我可以使用蒙版来设置蒙版元素并NaN使用np.nanmean- 但这仍然感觉有点笨拙。有没有办法“干净”地做到这一点?

python arrays numpy mask

4
推荐指数
1
解决办法
6091
查看次数

一起编译python和c ++

我基本上想看看是否有可能将Python代码编译成C++程序,以便生成单个二进制文件,然后使用C++代码中的函数调用(编译的)python代码.

背景:我有一个C++代码可以完成一些工作并生成我想要绘制的数据.然后,我使用SciPy编写了一个单独的Python脚本,该脚本读取输出数据,处理它并将其绘制到文件中.一切都按原样运作.

基本上,我想象的是:

void plotstuff() {
    my_python_func(); // This is the python script compiled into the c++ binary
}    
Run Code Online (Sandbox Code Playgroud)

我不需要在python代码和C++代码之间传递任何东西,除了确保它在同一目录中执行.如果我可以传递字符串参数,它可能会使事情变得更容易,但再次 - 不是必需的.

这可以实现吗?或者它通常是一个坏主意,我应该坚持让我的C++和python分开?

c++ python

2
推荐指数
1
解决办法
142
查看次数

标签 统计

c++ ×2

python ×2

arrays ×1

autoconf ×1

automake ×1

autotools ×1

mask ×1

numpy ×1