作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个这样的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
*Lib
任务创建一个直接在设备上运行 cuda 的库,或者分别在 gpuocelot 上运行。
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/
我是一名优秀的程序员,十分优秀!