Comment pouvons-nous compiler des fichiers ".c" dans un dossier d'entrée contenant un mot spécifique dans bash ? (Peu importe si une partie du mot est en majuscule ou en minuscule)
J'essaie ceci:
find $foldername -type f -name "*.c" | while read filename; do
# gcc filename | grep "word"
done
Mais je ne sais pas quoi écrire dans la dernière ligne pour le compiler.
Solution du problème
Je pense que tu pourrais faire quelque chose comme ça:
for FILE in $(find $foldername -type f -name "*.c"); do
if grep -q "text here" $FILE; then
#Compile the file with GCC
fi
done
Je ne l'ai pas testé car je ne suis pas sur une machine Linux en ce moment, et j'ai peut-être fait une faute de frappe, mais au moins la logique semble OK.
Pour compiler C, il y a deux cas:
- Vous le compilez "en une seule fois". Pour cela, il vous suffit d'utiliser
gcc -o output_file_name file1.c
Le problème avec cette technique est que vous devez mettre tous les fichiers requis dans la compilation en une seule fois. Par exemple, si fichier1.c inclut fichier2.c, vous devez faire gcc -o output_file_name file1.c file2.c
. Dans votre cas, je suppose que vos fichiers ne sont pas autonomes, donc cela ne fonctionnera pas.
- Vous pouvez créer des fichiers objets (
.o
), puis les lier ultérieurement. Pour cela, utilisez le-c
drapeau lors de la compilation:gcc -c file1.c
. Cela créera unfile1.o
fichier. Plus tard, lorsque vous aurez créé tous les fichiers objets requis, vous pourrez à nouveau les lier dans un seul exécutable avec GCC
gcc -o output_file_name file1.o file2.o
Je dois admettre que je n'ai pas compilé C "à la main" depuis très longtemps. J'ai utilisé ceci pour me rappeler comment c'est fait https://www.cs.utah.edu/~zachary/isp/tutorials/separate/separate.html. Je suis sûr qu'il existe de meilleurs tutoriels ailleurs, mais j'avais simplement besoin d'un rappel.
Si vous le pouvez, utilisez des outils de construction automatisés comme make ou cmake, même si dans votre cas, parce que vous ne voulez compiler que des fichiers contenant une certaine chaîne, cela peut être compliqué.
Aucun commentaire:
Enregistrer un commentaire