C++ 预处理器变量

标签 c++ makefile c-preprocessor

我在一个 header 中的 C++ 代码中使用了 SKELETON_JAR 变量。但是,我想让用户在编译时轻松定义 jar 的位置。我认为最简单的方法是将此定义放在 makefile 中,是这样吗?

#define SKELETON_JAR "./Util.jar"

最佳答案

在您的代码中:

#ifndef SKELETON_JAR
  #define SKELETON_JAR "./Util.jar" // default path
#endif

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

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

From GNU Make documentation :

Compiling C programs

n.o is made automatically from n.c with a command of the form `$(CC) -c $(CPPFLAGS) $(CFLAGS)'

关于C++ 预处理器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887464/

相关文章:

linux - 安装 Hep-math 时遇到的问题

c - 在#if 指令之前强制宏定义

c++ - "#define"和 inline 的行为是否相同?

c++ - 编译时对 std::array 的引用大小不可用

c++ - 当第二个依赖于第一个时,如何在构造函数初始值设定项列表中初始化两个 std::array

c++ - 如果任何列中都不需要图像/图标,MFC CListCtrl 是否合适?

build-process - 获取 make 以在出错时删除其他文件

c++ - 非常简单的应用程序失败,来自 Eclipse 的 "multiple target patterns"

c - #include ansi C 中的图像

c++ - 当类及其方法存储在指针数组中时如何调用它