如何在Makefile中添加#define?

Akh*_*nia 2 c++ makefile

我有一个 C++ 项目,我需要在其中定义一些 CXX 文件中的变量。我有将近 800 个文件,其中我需要为 200 个文件定义一个变量。所以我想在makefile中定义它。那么我们怎么能做到这一点。

Rip*_*pi2 7

假设您想要替换#define MYDEF

在您的 makefile 中,您有编译器命令行,类似于(最简单的示例):

g++ -o myfile.cpp
Run Code Online (Sandbox Code Playgroud)

要让每个#define都像这样myfile.cpp使用:-D

g++ -DMYDEF -o myfile.cpp
Run Code Online (Sandbox Code Playgroud)


Mat*_*her 6

只需-Dxxx=yy在命令行上添加(xxx宏和yy替换的名称,或者只是-Dxxx没有值)。

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


Gal*_*lik 6

我将添加编译器标志以将宏 ( -Dfor GCC) 设置为标准变量CXXFLAGS,以便它将应用于任何隐式规则编译器调用:

CXXFLAGS += -DMY_DEFINE
Run Code Online (Sandbox Code Playgroud)

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

target: source.cpp
    $(CXX) -std=c++14 $(CXXFLAGS) ...
Run Code Online (Sandbox Code Playgroud)

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


小智 1

使用可以使用头文件

定义.h:

#define deff 10
Run Code Online (Sandbox Code Playgroud)

main.cxx 或您要使用的任何文件

#include "definitions.h"
Run Code Online (Sandbox Code Playgroud)

另一种方法是在编译时给出以下 arg g++ -DMYDEF file1.cpp file2.cpp ------ file200.cpp -o abc.exe