Closed m-tmatma closed 6 years ago
プロジェクトファイル名を変えたことにより発生している事象です。
別件でissue を上げていますが_2017は要らないんじゃないかと思っています。
ファイル名を現在のままとしたい場合、vcxprojにtargetnameを定義することでprebuilt.batの修正を回避できます。
PRすべきなんだろうけど出先だからできないっていう…
22 で修正される、はず。
確かに、#22 で出力される HeaderMake.exe と MakefileMake.exe のファイル名が 変更されたことで、preBuild.bat でエラーは起きなくなっているのですが、
Funccode_define.h と Funccode_enum.h を削除した状態でソリューションをビルドすると 以下のエラーになります。
1>------ Build started: Project: sakura_lang_en_US, Configuration: Debug Win32 ------
2>------ Build started: Project: sakura, Configuration: Debug Win32 ------
1>sakura_lang.h(40): fatal error RC1015: cannot open include file '../sakura_core/Funccode_define.h'.
1>
1>Done building project "sakura_lang.vcxproj" -- FAILED.
sakura_lang のリソースで読み込まれている https://github.com/sakura-editor/sakura/blob/b65925397169824a5e41146ea188c98b87bcd1f4/sakura_lang_en_US/sakura_lang.h#L40 https://github.com/sakura-editor/sakura/blob/b65925397169824a5e41146ea188c98b87bcd1f4/sakura_lang_en_US/sakura_lang.h#L46
で Funccode_define.h と Funccode_enum.h をインクルードしています。
sakura_lang.vcxproj のビルド前に preBuild.bat を実行するかあるいは HeaderMake のプロジェクトの中の post-build event のなかで 以下の処理をさせたらいいと思います。
HeaderMake -in=..\sakura_core\Funccode_x.hsrc -out=..\sakura_core\Funccode_define.h -mode=define HeaderMake -in=..\sakura_core\Funccode_x.hsrc -out=..\sakura_core\Funccode_enum.h -mode=enum -enum=EFunctionCode
あと、Funccode_define.h と Funccode_enum.h は、自動的に生成できるファイルなので git リポジトリからは削除したほうがいいと思います。
sakura_lang.vcxproj のビルド前に preBuild.bat を実行するかあるいは HeaderMake のプロジェクトの中の post-build event のなかで 以下の処理をさせたらいいと思います。
現状では sakura_lang.vcxproj のプロジェクトの依存関係に HeaderMake は含まれていないので 依存関係を追加したほうがいいです。
20 で sakura_lang のプロジェクトを メインのソリューション (sakura.sln) に統合したことで
Funccode_define.h と Funccode_enum.h を削除した状態でソリューションをビルドすると 以下のエラーになります。
あと、Funccode_define.h と Funccode_enum.h は、自動的に生成できるファイルなので git リポジトリからは削除したほうがいいと思います。
現状では sakura_lang.vcxproj のプロジェクトの依存関係に HeaderMake は含まれていないので 依存関係を追加したほうがいいです。
sakura_lang の依存プロジェクトを sakura とすることで、必ず sakura_lang のビルド前には sakura の preBuild.bat が実行されるようになります。
HeaderMake のプロジェクトの中の post-build event のなかで 以下の処理をさせたらいいと思います。
sakura の中にある Funccode_x.hsrc をもとに HeaderMake を実行するので HeaderMake の post-build は依存関係から考えて変でした。
Funccode_define.h および Funccode_enum.h の生成処理が動作していない
sakura_core\Funccode_x.hsrc には以下のコメントが記載されている。
//このファイルから、Funccode_define.h と Funccode_enum.h が生成されます。
sakura_core\Funccode_x.hsrc から Funccode_define.h と Funccode_enum.h を 生成する処理は、sakura\preBuild.bat にあるが、HeaderMake と MakefileMake のパス名が 間違っているため (本来は HeaderMake_vc2017 と MakefileMake_vc2017) 機能していない。
Funccode_define.h も Funccode_enum.h もバージョン管理化にあるのでビルドエラーには ならないが、初期実装者の意図とは異なっていると思われる。