gpt4 book ai didi

gnu-make - 如何从 make 目标手动调用另一个目标?

转载 作者:行者123 更新时间:2023-12-03 08:50:30 40 4
gpt4 key购买 nike

我想要一个这样的makefile:

cudaLib :
# Create shared library with nvcc

ocelotLib :
# Create shared library for gpuocelot

build-cuda : cudaLib
make build

build-ocelot : ocelotLib
make build

build :
# build and link with the shared library

IE。 *Lib任务创建一个直接在设备上运行 cuda 的库,或者分别在 gpuocelot 上运行。

对于这两个构建任务,我需要运行相同的构建步骤,只有创建库不同。

有没有直接运行 make 的替代方法?
make build

一种后置条件?

最佳答案

正如您所写,build target 需要做一些不同的事情,这取决于你是刚刚完成了 ocelot 还是 cuda 构建。这是另一种说法,您必须参数化 build某种程度上来说。我建议单独的构建目标(很像你已经拥有的),以及相关的变量。就像是:

build-cuda: cudaLib
build-ocelot: ocelotLib

build-cuda build-ocelot:
shell commands
which invoke ${opts-$@}

在命令行中输入 make build-cuda (说)。进行第一次构建 cudaLib ,然后执行 build-cuda 的配方.它在调用 shell 之前扩展宏。 $@在这种情况下是 build-cuda ,因此 ${opts-$@}首先扩展为 ${opts-build-cuda} .使现在继续扩展 ${opts-build-cuda} .您将定义 opts-build-cuda (当然还有它的姐妹 opts-build-ocelot )在 makefile 的其他地方。

附言自 build-cuda等。阿尔。不是真正的文件,你最好告诉 make this ( .PHONY: build-cuda )。

关于gnu-make - 如何从 make 目标手动调用另一个目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377297/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com