Makefile(1)编写简单的makefile批量编译CUDA程序

时间:2024-04-09 13:09:50

本节讲述如何在命令行编译CUDA程序,使用makefile能让我们提高效率。

现在这里有若干cuda代码等待被编译:

Makefile(1)编写简单的makefile批量编译CUDA程序


当我们在命令行执行make edit时,代码被批量编译:

Makefile(1)编写简单的makefile批量编译CUDA程序


当我们想批量清空时,只需要在命令行敲上make clean即可,生成的可执行文件就被清空了。


我们来看一下这个简单又好用的makefile是如何编写的:


Makefile(1)编写简单的makefile批量编译CUDA程序


首先,使用变量objects定义了我们要生成的可执行文件,在这里统一定义是为了之后调用方便,想批处理直接调用$(objects)即可。当我们想添加或删除哪个cuda源码,只需要在这里修改就可以全文生效,这对于大型项目(文件多,要修改时工作量大)来说是非常好用的功能。

其次,这里的edit和clean都是标签类型,用过汇编的朋友应该不会陌生,简单来说就是当执行make+标签时,可以执行标签后面定义的内容。

.PHONY显式声明标签。

重头戏来了,真正要执行的是命令行指令。

规则是

target:依赖文件

             可执行指令

默认,当执行make时,如果没有target生成或者依赖文件其中任何一个比target的修改时间要晚,target都会更新。

这里对应cuda编译的可执行指令为nvcc -o filename filename.cu。