Sto imparando OpenCV utilizzando il libro Learning OpenCV.Makefile per compilare codice OpenCV in C++ su Ubuntu/Linux
Un problema che sto affrontando durante la compilazione del codice è che devo scrivere un comando lungo per compilare e ottenere l'eseguibile.
Questo è il comando che sto usando
g++ `pkg-config –cflags opencv` file_name.cpp -o output_file `pkg-config –libs opencv`
Io non sono Fai esperto, ma credo di poter eliminare per iscritto che a lungo comando utilizzando fanno. Prima dovrei spiegare il mio flusso di lavoro. Ho creato una directory chiamata opencv nella mia home directory (~/opencv/
). Sto leggendo la sezione del libro per sezione e codificando gli esempi o gli esercizi in nuovi file di codice sorgente cpp in quella directory. Quindi non conosco i nomi dei file prima mano.
Ora quello che voglio fare fare è,
Supponiamo che io ho codificato un nuovo file chiamato facedetect.cpp
nella mia directory opencv
, e se io chiamo fare come questo
make facedetect
poi voglio fare per eseguire il seguente comando per me
g++ `pkg-config --cflags opencv` facedetect.cpp -o facedetect `pkg-config --libs opencv`
modo che ogni volta che faccio un nuovo file chiamato abc.cpp, io exe carino make abc
in modo che possa funzionare
$ ./abc
al mio riga di comando per testare il mio abc.cpp
Si prega di dare che rendono file in modo che io possa salvare la frustrazione di digitare quel comando tempo ogni volta.
PS: Ho Googled per un aiuto su questo e trovato this sull'utilizzo CMake ma non riuscivo a capire che cosa che fa. Si prega di spiegare anche come posso usare CMake per lo stesso compito.
Sembra che solo 'g ++ $ (CFLAGS) -o $ @ $ <$ (LIBS)' funzionerà. Ma penso che sia una cosa da vedere. Grazie per il Makefile. Puoi spiegare cosa significa o dare una buona risorsa per imparare a fare Make – SPV
Buone risorse sul make: [make manual] (http://www.gnu.org/software/make/manual/make.html). Non è così spaventoso e difficile da capire come sembra. – morynicz
Grazie a Siva Prasad Varma, era davvero l'ordine ** degli argomenti. '$ (LIBS)' ** deve andare alla fine del comando di compilazione **, altrimenti gli esempi OpenCV non verranno compilati! – cosimo