如何从 qmake 定义类型?预包含 header 文件?

How to define types from qmake? Preinclude header file?

我正在重用 c 项目中的一些结构。该项目使用 auto/preincluded header 和一些类型定义。也就是说没有调用:

#include "architecture.h"

在相关的源文件中。

我正在尝试通过从 qt pri 文件定义类型来解决这个问题:

DEFINES += int8_t="\"signed char\""
DEFINES += uint8_t="\"unsigned char\""
DEFINES += int16_t="\"signed int\""
DEFINES += uint16_t="\"unsigned int\""
DEFINES += int32_t="\"signed long int\""
DEFINES += uint32_t="\"unsigned long int\""

我收到编译器错误 "duplicate signed"、"multiple types in one declaration"、...

typedef vs define.

中的类型和定义有些问题

有没有更好的方法来解决自动包含这种情况? 如何解决这个问题?

使用 DEFINES +- xyz_t="...." 与 Qt 包含的系统 headers 的类型定义发生冲突,例如 Qt Objects 使用的 <cstdint>

gcc 兼容编译器(gcc、MinGW、clang)有选项 -include <file> 强制预包含。

在 qmake 中这可以被 QMAKE_CXXFLAGS:

使用
QMAKE_CXXFLAGS += -include path/to/file.h

在包含的 file.h 中,我们可以包含其他系统类型定义 headers,例如:

#include <stdbool.h>
#include <cstddef>

通过这种方式可以很好且安全地定义类型。