Makefile-Variablen in C verwenden

8

Ich muss eine Datei in einem C-Programm lesen und möchte den Pfad zu dieser Datei nicht fest codieren. Ich möchte diesen Pfad als eine Make-Variable bereitstellen und dann in C prog.

verwenden %Vor%

Wie kann ich das tun?

    
hari 14.04.2011, 01:21
quelle

4 Antworten

17

Wahrscheinlich sollte mit einem Befehlszeilenparameter ausgeführt werden, aber wenn Sie dies innerhalb des Makefiles tun müssen, können Sie Folgendes verwenden:

%Vor%

-D gibt eine Kompilierzeit #define an, die MYSTRING auf "hello" setzt.

Wenn Sie MYSTRING im Code verwenden, wird diese in die Zeichenfolge umgewandelt. In diesem Beispielcode übergebe ich es einfach an printf , aber Sie könnten es genauso gut an fopen weitergeben, wie Sie es benötigen.

Wenn Sie diese ausführbare Datei ausführen, lautet die Ausgabe:

%Vor%

Das ist etwas anderes, als einfach den Wert im Quellcode hart zu codieren - Sie müssen neu kompilieren, wenn Sie die Zeichenfolge jemals ändern wollen (deshalb habe ich im ersten Absatz einen Befehlszeilenparameter vorgeschlagen).

    
paxdiablo 14.04.2011, 01:37
quelle
3

Sie möchten dies über eine String-Verkettung behandeln:

Makefile:

%Vor%

Dann hätten Sie in Ihrer C-Datei etwas wie:

%Vor%

Der Compiler verkettet die Zeichenfolgen während der Vorverarbeitung zu einer einzigen Zeichenfolge.

    
Jerry Coffin 14.04.2011 01:43
quelle
2

Wenn Sie gcc oder einen ähnlichen Compiler verwenden, können Sie die -D -Flagge, dokumentiert in der Manpage

Um einen schnellen Überblick zu geben, können Sie gcc -DSYMBOL=1 ausführen, und dies würde dazu führen, dass der Compiler dies zum Code hinzufügt:

%Vor%

Sie können also in Ihrem Makefile eine make-Variable setzen und sie dann an die gcc-Befehlszeilenoptionen übergeben.

    
Dhaivat Pandya 14.04.2011 01:54
quelle
0

Ich bin Anfänger beim Makefile und habe schließlich einen besseren Weg gefunden, Variablen von makefile nach #define zu übergeben, und wird nicht von Escape beeinflusst.

1. übergeben Sie eine Zeichenfolge

Sie können folgenden Code verwenden

%Vor%

ist gleich

%Vor%

2. Übergeben Sie ein int oder char

Sie können folgenden Code verwenden

%Vor%

ist gleich

%Vor%

3. SampleCode

%Vor%

und main.c

%Vor%     
Miao1007 30.09.2015 06:31
quelle

Tags und Links