2010-10-12 10 views
0

Je compile des programmes C++ via un script Perl utilisant:G ++ génère-t-il toujours un fichier de sortie même si le programme ne parvient pas à compiler/charger?

g++ -o out `find ./ -iname "*.h" -or -iname "*.cpp"` 

Cela semble générer un fichier out chaque fois, indépendamment du fait que le programme compilé avec succès ou non.
Chaque fois que le script essaie d'exécuter des programmes comme celui-ci, il obtient des erreurs d'autorisation (bizarre puisque je cours en tant que root).
Est-ce exact et si oui, comment puis-je l'empêcher?

Merci.

+0

Non pertinent à la question, mais: Il n'y a aucune raison d'inclure des fichiers * .h sur la ligne de commande du compilateur. Cela ne fait rien avec eux. –

+2

Pourquoi est-ce marqué comme perl? – alternative

+0

Parce que le script qui s'exécute est écrit en perl et que cela pourrait être une information pertinente. – chustar

Répondre

3

La réponse à votre question de titre (« Est-ce que g ++ encore générer un fichier de sortie, même si le programme ne parvient pas à compiler/charger? ») Est pas:

% echo blah > test.cpp 
% g++ -o out test.cpp 
test.cpp:1: error: expected constructor, destructor, or type conversion at end of input 
% ls *out* 
/bin/ls: *out*: No such file or directory 
% 
0
g++ -o out.tmp `find ./ -iname "*.h" -or -iname "*.cpp"` && mv out.tmp out 
1

Je l'ai résolu comme suit:
Pour une raison quelconque, essayer de mettre l'exécutable de sortie en utilisant -o out a semblé forcer la création du fichier même après l'échec de la compilation (il me semble).