sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.25k stars 163 forks source link

Funccode_define.h および Funccode_enum.h の生成処理が動作していない #21

Closed m-tmatma closed 6 years ago

m-tmatma commented 6 years ago

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 もバージョン管理化にあるのでビルドエラーには ならないが、初期実装者の意図とは異なっていると思われる。

berryzplus commented 6 years ago

プロジェクトファイル名を変えたことにより発生している事象です。

別件でissue を上げていますが_2017は要らないんじゃないかと思っています。

ファイル名を現在のままとしたい場合、vcxprojにtargetnameを定義することでprebuilt.batの修正を回避できます。

PRすべきなんだろうけど出先だからできないっていう…

kobake commented 6 years ago

22 で修正される、はず。

m-tmatma commented 6 years ago

22 で修正される、はず。

確かに、#22 で出力される HeaderMake.exe と MakefileMake.exe のファイル名が 変更されたことで、preBuild.bat でエラーは起きなくなっているのですが、

20 で sakura_lang のプロジェクトを メインのソリューション (sakura.sln) に統合したことで

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 リポジトリからは削除したほうがいいと思います。

m-tmatma commented 6 years ago

sakura_lang.vcxproj のビルド前に preBuild.bat を実行するかあるいは HeaderMake のプロジェクトの中の post-build event のなかで 以下の処理をさせたらいいと思います。

現状では sakura_lang.vcxproj のプロジェクトの依存関係に HeaderMake は含まれていないので 依存関係を追加したほうがいいです。

kobake commented 6 years ago

20 で sakura_lang のプロジェクトを メインのソリューション (sakura.sln) に統合したことで

Funccode_define.h と Funccode_enum.h を削除した状態でソリューションをビルドすると 以下のエラーになります。

あと、Funccode_define.h と Funccode_enum.h は、自動的に生成できるファイルなので git リポジトリからは削除したほうがいいと思います。

現状では sakura_lang.vcxproj のプロジェクトの依存関係に HeaderMake は含まれていないので 依存関係を追加したほうがいいです。

31 で対応しました。

sakura_lang の依存プロジェクトを sakura とすることで、必ず sakura_lang のビルド前には sakura の preBuild.bat が実行されるようになります。

m-tmatma commented 6 years ago

HeaderMake のプロジェクトの中の post-build event のなかで 以下の処理をさせたらいいと思います。

sakura の中にある Funccode_x.hsrc をもとに HeaderMake を実行するので HeaderMake の post-build は依存関係から考えて変でした。

12 の調査中に気づきました。

kobake commented 6 years ago

31 マージにより本問題は解決しました。