Merhaba,
Son zamanlar Phobos Kütüphanesi, karmaşıklaştıkça package.d isimli bir kolaylığa gidildiğini görüyorum. Anladığım kadarıyla dizin içindeki tüm dosyaları public import marifeti ile bir araya topluyor. Örneğin std.algorithm için konuşalım:
Altındaki tüm olanakları kullanmak istersek kısaca import ediyoruz ve sanırım bunda package.d dosyası etken olmalı. Ama dilersek de şöyle yapabiliyoruz:
import std.algorithm.comparison;
// hatta daha seçici olmak için şöyle:
import std.algorithm.comparison : equal;
Peki kendi kütüphanemiz şiştikçe bir kolaylık var mı? Şunun olduğunu biliyorum:
>dmd -w main.d sdb/*.d -ofmain.a
Ancak benim yapmak istediğim; örneğin test isminde bir klasörüm/paketim var ve içinde de birden fazla .d uzantılı dosyaları/kodları kolayca derlemek.
Peki mypackage.d isminde şu modülü işaret etsem niye yetmez:
module mypackage;
private import test.test1;
public import test.test2;
Derlerken:
>dmd -w main.d test/mypackage.d -ofmain.a
Çıktısı:
>/usr/bin/ld: main.o: in function _Dmain': test/mypackage.d:(.text._Dmain[_Dmain]+0x5): undefined reference to
_D4test5test27testingFNaNbNiNfZAya'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
Elbette sebebi belli. Linker diğer dosyadaki testing() işlevine bağlantı kuramadı çünkü derlerken onları dahil etmedim ama public import test.test2
yapmakla dahil ettiğimi sanıyordum, olmadı!
Bir yardım lütfen...:)