在autoconf和automake中启用OpenMP检查和标志

时间:2012-01-27 17:26:54

标签: openmp autotools autoconf automake

我无法在互联网上找到关于在autotools上使用openMP的任何信息!我发现对AC_OPENMP和AX_OPENMP之类的宏的模糊引用,两者都不起作用。 AC_OPENMP导致“可能未定义的宏错误”。 AX_OPENMP超过了autoconf,但导致configure抱怨AX_OPENMP未定义。据我了解,这些宏应检查openMP并将OPENMP_CFLAGS设置为适当的值。

在我的Makefile.am中,我甚至无法使用foo_CXXFLAGS(它是一个C ++项目)来适用于OpenMP。如果我在Makefile.am中手动设置foo_CXXFLAGS = -fopenmp,则除了将目标文件组合在一起的(链接)阶段外,所有编译命令都会添加-fopenmp标志,当然会导致未定义的引用错误。这个可能是我的误解。设置AM_CXXFLAGS = -fopenmp有效,但它不是最好的事情。实际上没有在没有检查的情况下设置foo_CXXFLAGS,但我似乎无法让它工作。

拜托,有人可以帮我吗?这似乎是一个如此简单,常见的任务,应该在网上有关于它的大量文档。为了澄清一些事情,是的,如果我手动执行代码编译很好,它运行没有错误。只有在这个自动混合阶段,事情才会搞砸。如果您可以向我指出使用openMP和autoconf的文档,那么您将成为我的新朋友。感谢。

Autoconf版本2.59,automake版本1.9.6

2 个答案:

答案 0 :(得分:4)

关于“可能未定义的宏错误”的第一个问题,AC_OPENMP已添加到2.62中的autoconf,因此您需要升级。至于第二个问题,如果你想在链接时添加一个标志,你想在AM_LDFLAGS中指定它

答案 1 :(得分:0)

我知道这已经很多年了,但这个答案可以帮助任何有同样问题的人。

我试图与Automake一起开始使用libtiff和OpenMP。以下这些行在src / Makefile.am中为我做了诀窍(忽略了libtiff):

matrix.resize(new_no_col,std::vector<int>(old_no_col));