Vous pouvez ajouter l'option macro suivante dans votre ligne de compilation (peut être facilement modifier pour votre environnement)
%.o: %.cpp
$(CC) $(CFLAGS) -D__ABSFILE__='"$(realpath $<)"' -c $< -o [email protected]
alors il vous suffit de cela pour avoir votre chemin complet:
#include <stdio.h>
int main()
{
printf(__ABSFILE__);
// will be expanded as: printf("/tmp/foo.c")
}
EDIT
Encore mieux que cela: Les règles suivantes suffisent !!!
%.o: %.cpp
$(CC) $(CFLAGS) -c $(realpath $<) -o [email protected]
Et vous pouvez maintenant utiliser __FILE__
macro:
#include <stdio.h>
int main()
{
printf(__FILE__);
// will be expanded as: printf("/tmp/foo.c")
}
Voulez-vous dire le chemin complet du fichier l'affirmation qui a échoué est contenue dans? –
@Neil oui, autant que je peux dire assert.h utilise __FILE__. Idéalement, voudrais une façon portable d'imprimer le chemin complet du fichier lorsque l'assertion a échoué – Anycorn
Portably, je pense que vous n'avez pas de chance. –