C++ g++-D标志将定义添加到对象文件

C++ g++-D标志将定义添加到对象文件,c++,linker,g++,C++,Linker,G++,好的,我最近刚刚开始在g++编译器中使用-D标志以不同的方式编译代码 但是,我遇到了一个问题,使用-D标志编译一个文件时,我需要在后续文件中继续使用它 例如,我有两个文件: sardine.hpp sardine.cpp 两个文件都包含以下部分: #ifdef PLANKTON #endif 然后,我使用以下方法编译此文件: g++ -c -D PLANKTON sardine.cpp -o sardine.o 如果我想在另一次编译中使用指向此的链接,为了使代码正常工作,我必须再次

好的,我最近刚刚开始在g++编译器中使用-D标志以不同的方式编译代码

但是,我遇到了一个问题,使用-D标志编译一个文件时,我需要在后续文件中继续使用它

例如,我有两个文件:

sardine.hpp sardine.cpp
两个文件都包含以下部分:

  #ifdef PLANKTON
  #endif
然后,我使用以下方法编译此文件:

g++ -c -D PLANKTON sardine.cpp -o sardine.o
如果我想在另一次编译中使用指向此的链接,为了使代码正常工作,我必须再次使用D标志(据我所知),例如:

有没有办法在编译时永久添加define?这样我就不必在下次编译时添加a-D标志了

对不起,如果我错过了什么:'(


谢谢!

我会使用生成文件。您可以在其中定义编译并设置标志,这样您就不必每次都键入所有内容

查看本教程:


事实上,我每次都在使用脚本进行编译。这比每次修改构建结构时修改生成文件要简单一些(目前我还在对项目进行原型设计)每个编译过程都完全独立于其他编译过程。当编译器解析.cpp源代码时,它只能对特定实例拥有的信息进行操作。正如其他人所说,您可能希望研究使用make或其他生成系统来更好地管理编译设置。您还可以将
#define PLANKTON
在它们都包含的共享头文件中,然后在重建之间只有一个地方对其进行修改,这将使您的命令行更简单。@notmyfriend Ahh在公共头文件中包含定义可能是一种方法。Darn太专注于使-D标志起作用:P,谢谢!
g++ -D PLANKTON tuna.cpp sardine.o -o tuna