递归地将FEATURE_FLAG导出到生成文件、CPP 和头文件
Exporting FEATURE_FLAG recursively to makefiles, CPP and Header files
-
FEATURE_FLAG 适用于feature_folder- 根据顶级 makefile 中的以下条件在构建系统中新引入。
IFDEF FEATURE_AAA 导出 FEATURE_FLAG=0 还 导出FEATURE_FLAG=1
-
feature_folder中的 CPP 和头文件进一步包括一些基于FEATURE_FLAG的头文件,如下所示。
例如,foo.cpp包括foo.h,它具有-
//Code
#if FEATURE_FLAG
#include <cstring>
#endif
//Code
a = memset(...);
//Code
- 通过在 makefile 中打印对应于 foo.cpp 和 foo.h 的 $(警告...(,我确保在编译 foo.cpp 之前正好FEATURE_FLAG=1。这意味着,FEATURE_FLAG=1 设置在包含的生成文件中工作正常。
但是,foo.cpp编译给出的错误为 - 未找到内存集。
如果我在 foo.h 中注释FEATURE_FLAG并将 cstring 作为默认值,则编译工作正常。
Q => 为什么 foo.h 没有"看到"FEATURE_FLAG设置为 1?
CXX := arm-5.3-uclibc-1.0.12/usr/bin/arm-linux-g++
CC := arm-5.3-uclibc-1.0.12/usr/bin/arm-linux-gcc
您已将 make 变量设置为FEATURE_FLAG
。 使变量存在于您的生成文件中,当编译器编译您的代码时,它们不会(自动(存在于您的编译器中。
如果要将生成文件中的值作为 C 或 C++ 预处理器宏定义传递到编译器,则必须使用-D
选项将其放在编译器的命令行上。
您没有显示足够的 makefile 来提供确切的指令,但假设您有一个包含预处理器定义的 make 变量CPPFLAGS
,您将执行以下操作:
CPPFLAGS += -DFEATURE_FLAG=$(FEATURE_FLAG)
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?