이
매크로의 내부 같은 기능을 사용할 수 있습니다 :
static function loadFileAsString(path:String) {
try {
var p = haxe.macro.Context.resolvePath(path);
return sys.io.File.getContent(p);
}
catch(e:Dynamic) {
return haxe.macro.Context.error('Failed to load file $path: $e', Context.currentPos());
}
}
기본적으로, Context.resolvePath
는 상대 경로를 해결합니다 모든 학급 경로에. 매크로 파일 my/package/MyMacro.hx
에, 당신은 my/package/MyMacroData.json
를로드하려는 경우, 당신은 사용할 수 있습니다
haxe.macro.Context.resolvePath('my/package/MyMacroData.json');
이 빌드의 모든 클래스 경로를 확인합니다 - 어떤 haxelibs 등을 포함하여, 그래서 파일을 찾을 수 있지만, 동일한 패키지/위치에 있지만 다른 클래스 경로 또는 haxelib에 파일을 저장함으로써 "섀도우"할 수 있으므로 고유 패키지/이름을 사용하여 우연히 발생하지 않도록하십시오.
하지만 예제 구현을보고 싶다면 내 compiletime library에서 사용하면됩니다. 관련 코드로 함수에 링크했습니다.
감사합니다. 정확히 내가 필요한 것입니다. 나는 이미 my.package.MyMacroData.json으로 시도하고 있었기 때문에 resolvePath를 성공하지 못했습니다. '/'....로하지 않았습니다. 저는 바보입니다 ^^ "고맙습니다. :) – Peekmo