2014-11-25 32 views
0

我想要编译来自同一来源我的程序的第二个版本(使用#ifdef TESTS等),那就是:如何使用GNU Make从相同的源代码编译第二个版本的程序?

prog.cpp --(compile)--> prog-tests 

我可以用下面的Makefile规则认识到这一点:

prog-tests: prog.cpp 
     $(LINK.cpp) -DTESTS $^ $(LOADLIBES) $(LDLIBS) -o [email protected] 

prog-tests: CPPFLAGS += -DTESTS 
prog-tests: prog.cpp 
     $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o [email protected] 

此版本是首选/最佳做法?我想尽可能使用隐式规则。

(我使用的GNU让4.0)。

+0

这是一个品味问题。我更喜欢第二个版本。很多时候,程序都是从*几个*翻译单元构建而成的。然后,您可能需要'foo.debug.o'作为调试版本,'foo.o'版本版本 – 2014-11-25 09:37:58

+0

请参阅http://stackoverflow.com/questions/21568244/object-file-directory-per-compiler-option-另一种方法的组合。 – 2014-11-25 09:53:25

回答

1

如果你想编译相同的源文件到使用不同的编译器标志的目标文件,这些目标文件必须被制作成不同的目录。

但是,当您的命令行在一个步骤中编译和链接(不生成目标文件)时,它们会跳过创建目标文件。所以,在这里添加额外的编译器标志的方式几乎没有区别。

相关问题