2017-04-05 13 views
0

私はcプロジェクトからいくつかの構造を再利用しています。このプロジェクトでは、いくつかの型定義を持つ自動/事前インクルードヘッダーが使用されています。これは、電話がないことを意味します。qmakeから型を定義する方法は?ヘッダファイルを事前にインクルードする?

#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\"" 

は私が

があり...、「1つの宣言で複数のタイプ」、コンパイルエラーが「署名重複」を取得します何種類かについては、typedef vs defineで定義します。

このケースを自動インクルードで解決する方法はありますか? これを修正するには?

+0

[標準の 'ヘッダーファイル](http://en.cppreference.com/w/cpp/header/cstdint)にすでに重複したタイプを作成するのはなぜですか? –

+0

これは一部のソースには含まれていないので、私は使いたいと思っています。これらの型はターゲットに関連し、組み込みデバイスの基本プロジェクトに自動で含まれる "architecture.h"によって定義されます。しかし、私はqmakeを使ってqtプロジェクトにそのようなインクルードを強制する方法を知らない。 – urkon

+2

GCC(またはClang)を使用している場合は、 '-include'オプションを使用してビルドコマンドラインからのヘッダファイルを強制的にインクルードすることができます。詳細については、[GCCマニュアル](https://gcc.gnu.org/onlinedocs/)をお読みください。 –

答えて

1

DEFINES +- xyz_t="...." qtのtypedefinitionsを使用すると、Qtオブジェクトで使用される<cstdint>のようなシステムヘッダーが含まれます。

gccコンパイラ(gcc、MinGW、clang)には、あらかじめ強制的に組み込むオプション-include <file>があります。

はqmakeのでは、これはQMAKE_CXXFLAGSで使用することができます。

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

種類が良くかつ安全に定義されている。この方法は:含まfile.h

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

我々は次のように他のシステムタイプの定義ヘッダを含めることができます。

+0

同等のVisual Studioコンパイラオプションは['/FI'](https://msdn.microsoft.com/en-us/library/8c5ztk84.aspx)です。 – Angew

関連する問題