C++预处理器变量

Mar*_*ior 6 c++ makefile c-preprocessor

SKELETON_JAR在一个标题中使用我的C++代码上的变量.但是,我希望允许用户轻松地在编译时定义jar的位置.我认为最简单的方法就是把这个定义放在makefile中就是这样吗?

#define SKELETON_JAR "./Util.jar"
Run Code Online (Sandbox Code Playgroud)

Gre*_*osz 8

在你的代码中:

#ifndef SKELETON_JAR
  #define SKELETON_JAR "./Util.jar" // default path
#endif
Run Code Online (Sandbox Code Playgroud)

然后在makefile中使用CPPFLAGS:=-DSKELETON_JAR="./Util.jar".

当然,您必须确保CPPFLAGS将编译器作为编译规则的一部分传递给编译器,如果您使用的是默认隐式规则.

来自GNU Make文档:

编译C程序

使用"$(CC)-c $(CPPFLAGS)$(CFLAGS)"形式的命令从nc自动生成

  • 作为定义默认路径的替代方法,您还可以执行以下操作:#ifndef SKELETON_JAR #error"尚未定义SKELETON_JAR"#endif这样您就可以轻松捕获尚未在Makefile中定义的任何情况 (2认同)

小智 6

根据您的编译器,执行此操作的常规方法是在makefile中使用编译器的-D标志.例如:

MYFLAGS = -DSKELETON_JAR ="foo"

然后是:

gcc $(MYFLAGS)$(OTHER_STUFF)