【问题标题】:make file preprocessor directive制作文件预处理器指令
【发布时间】:2015-06-01 12:08:58
【问题描述】:

我对制作文件不是很有经验,我正在尝试在我的制作文件中定义一个预处理器变量,在 Eclipse (linux) 中。

这是一项不平凡的任务,因为它似乎缺少一些东西......

您可以在下面找到我的 make 文件的结构:

 var_first=g++

all:

    g++ main_cell.cpp -o hello

以这种方式构建我的代码,我想做的是在我的 make 文件中定义一个变量,然后在我的代码中用 #ifdef,#endif 断言。

我经历了许多组合,但似乎缺少一些步骤......

能否指点一下?

【问题讨论】:

    标签: makefile g++ c-preprocessor compiler-options


    【解决方案1】:

    要在编译时添加定义,请使用-D g++ 选项。像这样:

    g++ -DMyDefine=123 main_cell.cpp -o hello
    

    现在在main_cell.cpp 你可以这样做:

    #if MyDefine == 123
       doStuff();
    #endif
    

    要为此使用 makefile 变量,请执行以下操作:

    all: g++ main_cell.cpp -o hello -Dvar_first=$(var_first)
    

    相当于.cpp文件中的#define var_first g++

    【讨论】:

      【解决方案2】:

      如果您想将预处理器变量直接传递给编译器,请使用-D 标志。

      例如要将变量PRE_MY_VAR定义为1,可以这样写:

      g++ -o myexecutable *.cpp -DPRE_MY_VAR=1
      

      所以在你的 makefile 中应该是:

      all:
          g++ main_cell.cpp -o hello -Dvar_first="g++"
      

      【讨论】:

        猜你喜欢
        • 2019-06-22
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        相关资源
        最近更新 更多