mikrocontroller.net

Forum: Compiler & IDEs Präprozessordefines aus externer Datei


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: A. Z. (donvido)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

ich suche jetzt schon eine Weile und finde aber nichts passendes.
Gibt es eine Möglichkeit (in Visual Studio) in C/C++ Präprozessor 
Definitionen aus einer externen Datei zu importieren?
Und zwar habe ich ein Simulinkmodell aus welchem Code generiert wird, 
der gewrapped und in eine DLL eingebunden wird. Dabei erzeugt Simulink 
eine defines.txt Datei, deren Inhalt wie folgt aussehen kann:
MODEL=Test
NUMST=4
NCSTATES=0
HAVESTDIO
RT
USE_RTMODEL
CLASSIC_INTERFACE=0
ALLOCATIONFCN=0
TID01EQ=0
MAT_FILE=0
ONESTEPFCN=1
TERMFCN=1
MULTI_INSTANCE_CODE=0
INTEGER_CODE=0
MT=1

Aktuell werden diese Definitionen von Hand in die Projekt Eigenschaften 
in Visual Studio kopiert. Das würde ich gerne automatisieren, da sich 
diese Definitionen auch gerne mal ändern, wenn das Simulink Modell 
angefasst wird. Am allerliebsten würde ich einfach irgendwo den Pfad zu 
der Datei angeben.
Wie würdet ihr das lösen?

Autor: Walter T. (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. Z. schrieb:
> Wie würdet ihr das lösen?

.h-Datei erzeugen.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. Z. schrieb:
> Gibt es eine Möglichkeit (in Visual Studio) in C/C++ Präprozessor
> Definitionen aus einer externen Datei zu importieren?

Ja, natürlich, das ist das Grundprinzip jedes C-Compilers.

Nur muss diese "externe Datei" den üblichen Gepflogenheiten entsprechen, 
d.h. normale C-Syntax verwenden.

Aus Deinem
MODEL=Test
NUMST=4
NCSTATES=0
HAVESTDIO
RT
USE_RTMODEL
(etc.)

wird dann
#define MODEL Test
#define NUMST 4
#define NCSTATES 0
#define HAVESTDIO
#define RT
#define USE_RTMODEL
(etc.)

Also jedes "=" durch ein Leerzeichen ersetzen und an den Anfang jeder 
Zeile ein "#define " einfügen.

Diese Transformation aus dem einen ins andere Format müsstest Du mit 
einem simplen Skript basteln, und das Ergebnis in Deinem Projekt via 
#include einbinden.

VisualStudio kennt auch das Konzept der "forced includes", die ohne eine 
eigene #include-Anweisung in jede zum Projekt gehörende 
Übersetzungseinheit eingebunden werden.

(Configuration Properties -> C/C++ -> Advanced -> Forced Include File)

: Bearbeitet durch Moderator
Autor: A. Z. (donvido)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke für die Hilfe,
Habe dann doch ein kleines Skript geschrieben um den Inhalt von 
Defines.txt anzupassen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.