Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;预处理器变量 我在一个标题中使用了C++代码> SCONDONSOJAR < /COD>变量。但是,我希望允许用户轻松地定义jar在编译时的位置。我认为最简单的方法就是把这个定义放到makefile中,是这样吗 #define SKELETON_JAR "./Util.jar"_C++_Makefile_C Preprocessor - Fatal编程技术网

C++;预处理器变量 我在一个标题中使用了C++代码> SCONDONSOJAR < /COD>变量。但是,我希望允许用户轻松地定义jar在编译时的位置。我认为最简单的方法就是把这个定义放到makefile中,是这样吗 #define SKELETON_JAR "./Util.jar"

C++;预处理器变量 我在一个标题中使用了C++代码> SCONDONSOJAR < /COD>变量。但是,我希望允许用户轻松地定义jar在编译时的位置。我认为最简单的方法就是把这个定义放到makefile中,是这样吗 #define SKELETON_JAR "./Util.jar",c++,makefile,c-preprocessor,C++,Makefile,C Preprocessor,根据编译器的不同,通常的方法是在makefile中使用编译器的-D标志。例如: MYFLAGS=-DSKELETON\u JAR=“foo” 随后: gcc$(MYFLAGS)$(其他内容)在您的代码中: #ifndef SKELETON_JAR #define SKELETON_JAR "./Util.jar" // default path #endif 然后在makefile中使用CPPFLAGS:=-DSKELETON_JAR=“./Util.JAR” 当然,您

根据编译器的不同,通常的方法是在makefile中使用编译器的-D标志。例如:

MYFLAGS=-DSKELETON\u JAR=“foo”

随后:

gcc$(MYFLAGS)$(其他内容)

在您的代码中:

#ifndef SKELETON_JAR
  #define SKELETON_JAR "./Util.jar" // default path
#endif
然后在makefile中使用
CPPFLAGS:=-DSKELETON_JAR=“./Util.JAR”

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

:

编译C程序

n、 o是从n.c自动生成的,命令格式为“$(CC)-c$(CPPFLAGS)$(CFLAGS)”


对同一个文件使用编译标志,并在Makefile中定义标志。

我想有些人只是喜欢否决投票。我可能会简单地描述-D=GCC选项,而不是对OP的makefile做出任何可能令人困惑的假设。OP用
makefile
标记问题,但他不仅标记了它,而且在问题中明确地询问了makefile!有用的条件编译,尽管我不会冒险对OP的makefile的性质做任何假设。重要的部分只是-D命令行开关。作为定义默认路径的替代方法,您还可以执行以下操作:#ifndef SKELETON_JAR#error“SKELETON_JAR尚未定义”#end如果通过这种方式,您可以轻松捕获未在Makefile中定义的任何情况,您的构建环境是什么?你的操作系统?