Makefile配置 Ubuntu编译C++,Cuda文件

Ubuntu编译C++,Cuda文件

make编译并链接所有文件

make complie 仅编译

make link链接所有.o文件

make link_only fil1.o fil2.o ... 手动指定链接文件

make clean 清除编译出的结果

# 指定编译器
NVCC = nvcc
CC = g++    # 可用于编译 .c/.cpp
CFLAGS = -I.  # 头文件路径

# 查找所有源文件
CU_SRCS := $(wildcard *.cu)
CPP_SRCS := $(wildcard *.cpp)
C_SRCS := $(wildcard *.c)

# 生成目标文件(将 .cu, .cpp, .c 替换为 .o)
OBJS := $(CU_SRCS:.cu=.o) $(CPP_SRCS:.cpp=.o) $(C_SRCS:.c=.o)

# 最终生成的可执行文件
TARGET = output

# 默认规则,编译所有目标并链接
all: $(TARGET)

# 生成可执行文件(链接所有 .o 文件)
$(TARGET): $(OBJS)
	$(NVCC) $(OBJS) -o $(TARGET)


# 仅编译所有源文件(生成 .o 文件但不链接)
compile: $(OBJS)

# 仅链接,使用所有 .o 文件
link: $(OBJS)
	$(NVCC) $(OBJS) -o $(TARGET)

# 允许手动指定输入对象文件进行链接
link_only:
	@if [ -z "$(filter-out $@,$(MAKECMDGOALS))" ]; then \
		echo "Usage: make link_only file1.o file2.o ..."; \
	else \
		$(NVCC) $(filter-out $@,$(MAKECMDGOALS)) -o $(TARGET); \
	fi

# 规则:编译 .cu 文件
%.o: %.cu
	$(NVCC) $(CFLAGS) -c $< -o $@

# 规则:编译 .cpp 文件
%.o: %.cpp
	$(CC) $(C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值