Saya baru saja mewarisi beberapa kode C ++ yang ditulis dengan buruk dengan satu file cpp yang berisi fungsi utama dan banyak fungsi lainnya. Ada juga .h
file yang berisi kelas dan definisi fungsinya.
Sampai sekarang program ini dikompilasi menggunakan perintah g++ main.cpp
. Sekarang saya telah memisahkan kelas .h
dan .cpp
file apakah saya harus menggunakan makefile atau masih dapatkah saya menggunakan g++ main.cpp
perintah?
c++
compilation
header
makefile
Meir
sumber
sumber
g++ *.cpp -o output
Untuk mengkompilasi secara terpisah tanpa menautkan, Anda perlu menambahkan
-c
opsi:sumber
g++ -o my_executable myclass.o main.o
Mengompilasi beberapa file sekaligus adalah pilihan yang buruk jika Anda ingin memasukkannya ke dalam Makefile.
Biasanya dalam Makefile (untuk GNU / Make ) sudah cukup untuk menulis bahwa:
Dengan begitu,
make
kompilasi ulang yang benar hanya perlu dilakukan kompilasi ulang. Satu juga dapat menambahkan beberapa tweak untuk menghasilkan dependensi file header - sehingga make juga akan membangun kembali dengan benar apa yang perlu dibangun kembali karena perubahan file header.sumber
Anda masih dapat menggunakan g ++ secara langsung jika Anda ingin:
di mana f1.cpp dan f2.cpp adalah file dengan fungsi di dalamnya. Untuk detail tentang bagaimana menggunakan make untuk melakukan build, lihat dokumentasi GNU make yang luar biasa .
sumber
Saya tahu pertanyaan ini telah ditanyakan bertahun-tahun yang lalu tetapi masih ingin membagikan bagaimana saya biasanya mengkompilasi beberapa file c ++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
itu saja!!
Alasan saya menggunakan * adalah bahwa bagaimana jika Anda memiliki 30 file cpp, apakah Anda akan mengetik semuanya? atau cukup gunakan tanda * dan hemat waktu :)
ps Gunakan metode ini hanya jika Anda tidak peduli dengan makefile.
sumber
.h
file tidak akan ada hubungannya dengan kompilasi ... Anda hanya peduli dengan file cpp ... jadi ketikkang++ filename1.cpp filename2.cpp main.cpp -o myprogram
berarti Anda mengkompilasi setiap file cpp dan kemudian menautkannya menjadi satu
myprgram
.kemudian jalankan program Anda
./myprogram
sumber
Seperti yang dikatakan rebenvp , saya menggunakan:
Dan kemudian lakukan ini untuk output:
Tetapi solusi yang lebih baik adalah menggunakan
make
file. Baca di sini untuk tahu lebih banyak tentangmake
file.Pastikan juga bahwa Anda telah menambahkan
.h
file yang diperlukan di.cpp
file.sumber
Anda dapat menggunakan beberapa perintah g ++ lalu menautkan, tetapi yang termudah adalah menggunakan Makefile tradisional atau sistem build lain: seperti Scons (yang seringkali lebih mudah diatur daripada Makefiles).
sumber
Jika Anda ingin menggunakan
#include <myheader.hpp>
di dalam file cpp Anda, Anda dapat menggunakan:sumber
Saya dulu menggunakan Makefile khusus yang mengkompilasi semua file di direktori saat ini, tetapi saya harus menyalinnya di setiap direktori yang saya butuhkan, setiap kali.
Jadi saya membuat alat saya sendiri - Universal Compiler yang membuat proses lebih mudah ketika mengkompilasi banyak file.
sumber
~ / In_ProjectDirectory $ g ++ coordin_main.cpp coordin_func.cpp coordin.h
~ / In_ProjectDirectory $ ./a.out
... Bekerja!!
Menggunakan Linux Mint dengan Geany IDE
Ketika saya menyimpan setiap file ke direktori yang sama, satu file tidak disimpan dengan benar dalam direktori; file coordin.h. Jadi, periksa kembali dan disimpan di sana sebagai coordin.h, dan tidak salah sebagai -> coordin.h.gch. Hal-hal kecil. Arg !!
sumber