diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 250044601109..918bec0f92d4 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -1635,6 +1635,9 @@ proc cgenWriteModules*(backend: RootRef, config: ConfigRef) = # deps are allowed (and the system module is processed in the wrong # order anyway) g.config = config + let (outDir, _, _) = splitFile(config.outfile) + if not outDir.isEmpty: + createDir(outDir) if g.generatedHeader != nil: finishModule(g.generatedHeader) while g.forwardedProcsCounter > 0: for m in cgenModules(g): diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index f91bfda8c9c4..1be8629b9317 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -2345,6 +2345,9 @@ proc myClose(graph: ModuleGraph; b: PPassContext, n: PNode): PNode = else: AbsoluteFile(getCurrentDir() / m.config.outFile.string) else: changeFileExt(completeCFilePath(m.config, AbsoluteFile f), ext) + let (outDir, _, _) = splitFile(outfile) + if not outDir.isEmpty: + createDir(outDir) discard writeRopeIfNotEqual(genHeader() & code, outfile) for obj, content in items(globals.classes): genClass(m.config, obj, content, ext)