Automake:如何为编译器命令添加前缀

Posted

技术标签:

【中文标题】Automake:如何为编译器命令添加前缀【英文标题】:Automake: How to prefix a command to compiler command 【发布时间】:2017-05-02 11:58:16 【问题描述】:

以下引用来自scorep 的文档。为了使用该软件,scorep 命令被称为编译器前缀,即mpicc。我正在使用自动制作。到目前为止,在configure.ac 我有AC_PROG_CC([mpicc])。如何使用 automake 将 scorep 命令添加到编译器命令的前缀?

当使用 makefile 构建应用程序时,它很方便 定义一个占位符变量以指示是否“准备” 需要像仪器这样的步骤或仅纯编译 和链接。例如,如果此变量称为 PREP,则 在 makefile 中定义 C 编译器的行可以更改为:

MPICC = mpiccMPICC = $(PREP) mpicc

然后可以使用相同的 makefile 来构建一个仪表化的 版本与

make PREP="scorep"

命令或完全优化且未检测的默认构建 简单地使用:

make.

【问题讨论】:

【参考方案1】:

如果您的包必须始终使用 scorep 构建,那么只需将其添加到您的 configure.ac 中的 CC,例如:

AC_PROG_CC([mpicc])
CC="scorep $CC"

如果构建你的包的用户没有scorep,这将导致构建失败,但大概这就是你想要的。 (或者,如果未找到 scorep,您可以向 configure.ac 添加检查以使其出错。)

如果您希望用户有选择地使用scorep,您可以将上述分配设为有条件的。一种常见的方法是使用一个选项,例如,--with-scorep

最后一个选择是什么都不做,让想要这个功能的用户请求它:

make CC='scorep mpicc'

【讨论】:

【参考方案2】:

此答案特定于 Score-P。

我想分享 Score-P 邮件列表的答案。基于这个link,需要配置一下

SCOREP_WRAPPER=OFF ../configure \
     CC=scorep-mpicc \
     CXX=scorep-mpicxx \
     FC=scorep-mpif90 \
     --disable-dependency-tracking

【讨论】:

【参考方案3】:

Install_Scorep 是一个 bash 脚本,用于在基于 Linux 的系统上安装 Score-P 3.0。要安装 Score-P,请克隆存储库并运行名为 install_scorep.sh 的脚本。这将完成成功安装 Score-P 3.0 所需的所有任务。

【讨论】:

以上是关于Automake:如何为编译器命令添加前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何为格式列表输出添加前缀?

如何为新安装的 Boost 添加编译器包含路径和链接器库路径?

VC6.0程序编译后如何为程序添加图标

如何为mingw编译器编译fips?

automake:编译器选项的顺序阻碍了 make

如何为所有节点/快速路由添加前缀