Domanda

Quando compilo un file .c utilizzando il comando cc, si crea un eseguibile a.out. Ho notato che si crea il file a.out dentro la mia directory corrente. C'è un modo per rendere il file a.out essere creati nella stessa directory del file .c ovunque mi capita di essere sul sistema?

per esempio se il mio percorso di corrente è ~/desktop e digitare il comando:

cc path/to/my/file/example.c

Si crea il file nella directory a.out ~/desktop. Vorrei che per creare il file a.out in path/to/my/file/a.out

È stato utile?

Soluzione

Si dovrà utilizzare l'opzione -o ogni volta che si chiama cc:

cc -o path/to/my/file/a.out path/to/my/file/example.c

o si può fare uno script wrapper in questo modo:

Mycc

#!/bin/bash

dirname=`dirname "$1"`
#enquoted both input and output filenames to make it work with files that include spaces in their names.
cmd="cc -o \"$dirname/a.out\" \"$1\""

eval $cmd

allora si può richiamare

./mycc path/to/my/file/example.c

e, a sua volta, chiama

cc -o "path/to/my/file/a.out" path/to/my/file/example.c

, naturalmente, si può mettere in Mycc $ PATH in modo si può chiamare come:

mycc path/to/my/file/example.c

Altri suggerimenti

È possibile dare il "-o" bandiera per definire il file di output. Ad esempio:

cc path/to/my/file/example.c -o path/to/my/file/a.out

Sì, con -o.

cc path/to/my/file/example.c -o path/to/my/file/a.out

Si potrebbe non essere quello che stai cercando, ma si può facilmente reindirizzare l'output di una compilation utilizzando il siwtch -o in questo modo:

cc -o /a/dir/output b/dir/input.c

Non so, come archieve, ciò che si vuole (sostituzione automatica), ma credo che si può fare con un po 'bash in questo modo: (io sono povero di scripting, non testato e può essere sbagliato):

i = "a/path/to/a/file.c" cc -o ${i%.c} $i

Questo dovrebbe compilare un file specificato in i in un file di output nella stessa dir, ma con il suffisso .c-rimosso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top