如何编写支持C++11、生成radixsort可执行文件的Makefile
正确Makefile编写方案
原有写法的问题
你之前的编译命令缺少-o输出参数,g++会将命令中的radixsort识别为待编译的输入文件而非目标可执行文件,直接触发编译错误。同时需要注意Makefile的编译命令行开头必须是Tab缩进,不能用空格替代。
基础可用版本
直接复制以下内容保存为Makefile即可满足需求:
radixsort: main.cpp header.h g++ -std=c++11 -o radixsort main.cpp
注意事项:
- 第二行的
g++命令开头必须是Tab缩进,这是Makefile的强制语法要求 - 不需要显式把
header.h传入编译命令,编译器会自动处理main.cpp中引入的头文件依赖 - 编译完成后直接执行
./radixsort即可运行程序
更易维护的规范版本
如果后续需要调整编译参数、C++标准或者源文件,用变量定义的方式修改成本更低:
# 定义使用的编译器 CXX = g++ # 定义编译参数:指定C++11标准、开启常规编译警告 CXXFLAGS = -std=c++11 -Wall # 定义输出的可执行文件名 TARGET = radixsort # 定义依赖的源文件 SRCS = main.cpp $(TARGET): $(SRCS) header.h $(CXX) $(CXXFLAGS) -o $@ $< # 清理规则:一键删除生成的可执行文件 .PHONY: clean clean: rm -f $(TARGET)
保存后执行make即可编译生成可执行文件,执行make clean即可一键删除生成的radixsort文件。
内容的提问来源于stack exchange,提问作者Jeremy G
相关产品推荐
相关产品推荐

