C++;预处理器变量 我在一个标题中使用了C++代码> SCONDONSOJAR < /COD>变量。但是,我希望允许用户轻松地定义jar在编译时的位置。我认为最简单的方法就是把这个定义放到makefile中,是这样吗 #define SKELETON_JAR "./Util.jar"
根据编译器的不同,通常的方法是在makefile中使用编译器的-D标志。例如: MYFLAGS=-DSKELETON\u JAR=“foo” 随后: gcc$(MYFLAGS)$(其他内容)在您的代码中: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” 当然,您
#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中定义的任何情况,您的构建环境是什么?你的操作系统?