如何在Makefile中添加#define?

10

我有一个C++项目,需要在一些CXX文件中定义一个变量。我有近800个文件,其中有200个文件需要定义一个变量。所以我想在makefile中定义它。那么我们该如何做呢?


4个回答

13

只需在命令行中添加-Dxxx=yy (其中xxx是宏名称,yy是替换内容,如果没有值,则只需使用-Dxxx)。

这不是Makefile命令,而是编译器命令行选项的一部分。


1
什么是xxx和yy? - Akhil Pathania
1
这意味着,xxx 是名称,yy 是值。例如,#define xxx (yy) 等同于 -Dxxx=yy - Fiddling Bits

7

假设你需要替换#define MYDEF

在你的makefile中,你有编译器命令行,例如(最简单的例子):

g++ -o myfile.cpp

为了让每个myfile.cpp都获取到那个#define,只需使用-D,像这样:
g++ -DMYDEF -o myfile.cpp

5
我会在标准变量CXXFLAGS中加入编译器标志,以设置宏(-D用于GCC),这样它就会应用于任何隐式规则的编译器调用:
CXXFLAGS += -DMY_DEFINE

然后将该变量添加到您可能具有的任何显式规则中:

target: source.cpp
    $(CXX) -std=c++14 $(CXXFLAGS) ...

因为标准变量只添加了隐含规则

1
您可以使用头文件。

defining.h:

#define deff 10

在任何你想使用的文件中,包括main.cxx。
#include "definitions.h"

另一种方法是在编译时添加以下参数: g++ -DMYDEF file1.cpp file2.cpp ------ file200.cpp -o abc.exe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接