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



我一辈子都无法在互联网上找到任何关于将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也是无效的,但我似乎无法做到这一点。

拜托,有人能帮我吗?这似乎是一项简单、常见的任务,网上应该有很多关于它的文档。为了澄清一些事情,是的,如果我手动执行,代码会编译得很好,并且运行时不会出错。只是在这个自动财政的阶段,事情才搞砸了。如果你能给我介绍一下使用autoconf的openMP的文档,你将是我的新好朋友。谢谢

Autoconf版本2.59,automake版本1.9.6

关于"可能未定义的宏错误"的第一个问题,AC_OPENMP是在2.62中添加到autoconf的,因此您需要升级。至于第二个问题,如果您希望在链接时添加一个标志,则需要在AM_LDFLAGS 中指定该标志

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

我试着让libtiff和OpenMP与Automake一起工作。以下几行在src/Makefile.am中为我完成了任务(忽略libtiff):

foo_CFLAGS += $(LIBTIFF_CFLAGS) -fopenmp
foo_LDFLAGS = -fopenmp
foo_LDADD   = $(LIBTIFF_LIBS)

最新更新