【问题标题】:Automake: How to prefix a command to compiler commandAutomake:如何为编译器命令添加前缀
【发布时间】:2017-05-02 11:58:16
【问题描述】:
以下引用来自scorep 的文档。为了使用该软件,scorep 命令被称为编译器前缀,即mpicc。我正在使用自动制作。到目前为止,在configure.ac 我有AC_PROG_CC([mpicc])。如何使用 automake 将 scorep 命令添加到编译器命令的前缀?
当使用 makefile 构建应用程序时,它很方便
定义一个占位符变量以指示是否“准备”
需要像仪器这样的步骤或仅纯编译
和链接。例如,如果此变量称为 PREP,则
在 makefile 中定义 C 编译器的行可以更改为:
MPICC = mpicc 到 MPICC = $(PREP) mpicc
然后可以使用相同的 makefile 来构建一个仪表化的
版本与
make PREP="scorep"
命令或完全优化且未检测的默认构建
简单地使用:
make.
【问题讨论】:
标签:
makefile
prefix
automake
scorep
【解决方案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 所需的所有任务。