如何修改Makefile生成带/不带-DTEST参数的两个C++可执行文件
修改后的完整Makefile
CXX = g++ # 公共基础编译参数 BASE_CXXFLAGS = -std=c++11 -g -O3 -fopenmp all: P1 P1-Test @echo 程序编译完成,生成两个可执行文件:P1(普通版)、P1-Test(带TEST宏版本) # 编译普通版P1,使用无-DTEST的参数 P1: P1.cpp $(CXX) $(BASE_CXXFLAGS) $< -o $@ # 编译Test版P1,使用带-DTEST的参数 P1-Test: P1.cpp $(CXX) $(BASE_CXXFLAGS) -DTEST $< -o $@ .PHONY: clean clean: $(RM) -r P1 P1-Test *.dSYM
调整说明
- 抽离公共编译参数为
BASE_CXXFLAGS变量,避免重复编写相同参数,后续修改公共参数只要改这一处即可 - 将
all目标的依赖调整为P1和P1-Test,执行默认make命令就会同时编译两个版本的可执行文件 - 分别为两个可执行文件定义专属编译规则,正好匹配你需要的两组编译参数要求
- 清理规则新增了
P1-Test,执行make clean时会同时删除两个可执行文件 - 如果你的源码文件名不是
P1.cpp,把两个编译规则里的P1.cpp替换为实际的源码文件名即可
注意:Makefile中规则下方的命令行开头必须是TAB字符,不能用空格,复制使用时如果报错可以先检查缩进格式是否正确
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

