2017-04-05 2 views
0

Ich verwende einige Strukturen von c-Projekt wieder. Dieses Projekt verwendet auto/preincluded Header mit einigen Typdefinitionen. Das bedeutet, dass kein Anruf vorliegt:Wie definiere ich Typen von qmake? Headerdatei einbeziehen?

#include "architecture.h" 

in den zugehörigen Quelldateien.

ich fix ich versuche, dies mit den Typen von qt pri-Datei definieren:

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

ich Compiler-Fehler "Duplicate unterzeichnet", "mehrere Arten in einer Erklärung", ...

Es gibt etwas über die Typen und definiert bei typedef vs define.

Gibt es eine bessere Möglichkeit, diesen Fall mit Auto-Include zu lösen? Wie behebt man das?

+0

Warum möchten Sie Duplikate von Typen bereits in [der Standard '' Header-Datei] (http://en.cppreference.com/w/cpp/header/cstdint) erstellen? –

+0

Weil das in einigen Quellen nicht enthalten ist, würde ich gerne verwenden. Diese Typen sind zielbezogen und durch die "architecture.h" definiert, die automatisch im Basisprojekt eines eingebetteten Geräts enthalten ist. Aber ich weiß nicht, wie man ein solches Include mit qmake im qt-Projekt erzwingen kann. – urkon

+2

Wenn Sie GCC (oder Clang) verwenden, können Sie die Option "-include" verwenden, um eine Headerdatei zwangsweise in die Befehlszeile des Builds einzufügen. Lesen Sie [das GCC-Handbuch] (https://gcc.gnu.org/onlinedocs/) für weitere Informationen. –

Antwort

1

Verwendung von DEFINES +- xyz_t="...." Koliden mit Typdefinitionen von qt enthalten System-Header wie <cstdint> von Qt Objects verwendet.

GCC-kompatiblen Compiler (gcc, MinGW, Clang) haben Option -include <file> zu erzwingen preinclude.

In Qmake kann dies durch QMAKE_CXXFLAGS verwendet werden:

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

In der mitgelieferten file.h können wir anderen Systemtyp-Definition-Header wie umfassen:

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

Auf diese Weise Typen sind gut und sicher definiert.

+0

Die entsprechende Visual Studio-Compileroption ist ['/FI'](https://msdn.microsoft.com/en-us/library/8c5ztk84.aspx). – Angew

Verwandte Themen