Releasing units without source code/id
From Lazarus wiki
Jump to navigationJump to search
│
English (en) │
español (es) │
Bahasa Indonesia (id) │
русский (ru) │
Ini dapat berguna untuk merilis unit FreePascal tanpa menerbitkan kode sumbernya:
- Kode sumber berisi informasi hak milik.
- Dalam pelajaran, karena anda ingin memaksa siswa untuk menggunakan sebuah unit hanya dengan interface (kontrak), dan tidak melihat pada implementasinya.
FreePascal membolehkan anda untuk melakukannya dengan cara berikut.
Penyedia unit (dan pemilik kode sumber) harus:
- Mengkompilasi unit secara terpisah; direkomendasikan untuk memakai opsi -Ur (Hasilkan file unit rilis; lihat User's Manual untuk rinciannya)
- Menerbitkan baik file *.ppu dan *.o yang dihasilkan. Juga lihat Seksi 3.3 pada User's Manual (Compiling a unit).
Pengguna dari unit yang disediakan harus:
- Mengkompilasi program menggunakan (klien), agar kompilator dapat menemukan file unit *.ppu dan *.o (misalnya melalui opsi kompilator -Fu).
Selanjutnya, ada dua konteks kompilator dalam masalah itu:
- Instalasi kompilator dari penyedia
- Instalasi kompilator dari pengguna (klien)
Catatan
- Penyedia dan pengguna harus menggunakan versi kompilator yang sama. Meskipun kompatibilitas mundur antara unit terkompilasi tidak perna rusak demi keperluan, ini terjadi secara reguler untuk mendukung fitur baru atau pembetulan bug.
- Target OS dari unit yang disediakan harus sama dengan target OS yang dipakai untuk mengompilasi program klien.
- Jika unit yang disediakan tergantung pada unit lain U, maka unit U dari konteks klien perlu kompatibel dengan unit U dalam konteks penyedia. Untuk keperluan tersebut, kompilator embed yang menyediakan checksum dari seksi interface dari unit U dalam file *.ppu pada unit yang disediakan. Kompilator klien memeriksa embedded checksum terhadap checksum unit U dalam konteks klien. Jika checksums berbeda, maka kompilator klien akan mencoba mengompilasi ulang unit yang disediakan, dan ini akan gagal karena sumber tidak ada. Dengan opsi kompilator -vu anda mendapatkan informasi lengkap atas penanganan file unit, dan anda dapat mencari baris yang menyatakan Recompiling ..., checksum changed for ....
- Dalam keadaan tertentu, unit System dari konteks penyedia harus kompatibel dengan unit System dari konteks klien, karena setiap unit secara implisit tergantung pada unit System. Oleh karena itu, direkomendasikan untuk menggunakan rilis stabel dari kompilator untuk mengompilasi unit yang disediakan.
- Mungkin ada beberapa opsi kompilator lain (selain setelan Target OS):
- -M (Mode)
- -C (Checking), seperti -Cr (range checking), -Ci (i/o checking), -Co (overflow checking), -Ct (stack checking)
- -Sa (Include assert statements in compiled code)
- -O (Optimization)
- -gl (Generating lineinfo code)
- Untik versions kompilator FreePascal lebih lama, nama dari file sumber unit yang disediakan semuanya harus dalam huruf kecil. Untuk versi terbaru kompilator, ini tidak lagi menjadi masalah. (User's Manual tidak mutakhir pada topik ini, saya kira. Jika anda mengetahui lebih detail, misalnya dari versi mana ini berubah, maka silahkan taruh di sini.)