-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Makefile調整:入力ファイルUTF-8指定、GitHash出力 #306
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
git hash の生成は vc と共通化した方がいいです。
それはそうなのですが、今のところは暫定対処ということで考えています。 |
sakura_core/Makefile
Outdated
@@ -32,7 +32,7 @@ DEFINES= \ | |||
-DUNICODE \ | |||
-DNDEBUG | |||
CFLAGS= -O2 \ | |||
-finput-charset=cp932 -fexec-charset=cp932 \ | |||
-finput-charset=utf-8 -fexec-charset=utf-8 \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-fexec-charset
は cp932
ではないでしょうか。
utf-8
にすると #265 (comment) で指摘した問題が出ると思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なるほど。 e8afea7 で cp932 に戻しました。
さすが・・・ って、あれ? なんでmakefileまだ保守してるんでしたっけ? |
|
考慮はされてないですが、 |
まあ、別 PR でいいですね。 |
はい、エンコーディングを変更した btool のビルド確認ができれば良いかなくらいの気持ちで今回の対応してます |
@k-takata さんにご指摘いただいた件ですが、対応が必要だと思います。 ↓ btool フォルダに入っている gcc 向けツールをビルドしている。 Lines 445 to 446 in 611dcc6
↓ビルドしたツールを使ってshiftJISの ダメ文字 の後に '\' を追加し、windresを使って *.rc をビルドし、一時ファイルを消している Lines 451 to 454 in 611dcc6
ダメ文字とは、マルチバイト文字の 2byte目 に 0x5c (バックスラッシュ) が来る文字のこと。 UTF-8の場合、2byte目以降は必ず最上位ビットが立つので、 一方、windresに対してリソーススクリプトの文字コードを教えてあげないといけないので、その分の修正が必要です。 手元環境にあった windres(binutil-2.27) には -c 65001 を受け付けました。 Makefileを消しちゃダメな理由・・・
了解です。すっかり忘れておりました。 |
最終的には appveyor ビルドしたいです。 |
このPRは今、451行目あたりのRC(windres)オプションに変更が必要で止まってる認識・・・。 |
e8afea7
to
260f11b
Compare
ご無沙汰しております。
結果、btool は不要になったっぽい気がしますが、それについてどうするかの対応は別件として考えたいです。 |
sakura_core/Makefile
Outdated
@@ -50,380 +50,19 @@ exe= sakura.exe | |||
OBJS= \ | |||
CAutoReloadAgent.o \ | |||
CAutoSaveAgent.o \ | |||
CBackupAgent.o \ | |||
CCodeChecker.o \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここら辺ばっさり削っていいのですか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あ、すみません、実験用コードが混じってました。直します
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
しょうもなすぎるミスコミットだったので修正コミット上書いて push -f しました
260f11b
to
8b4f21c
Compare
夜にまた見に来ます |
ビルド手順を共有してほしいです。 |
cd sakura_core です。自分も詳細は把握しておらず手探りです。 |
メイクコマンドはmingw32–makeでやるものらしいです。こいつはpathにshがいると誤動作するのでgit |
追加情報結論、いまMinGWではビルドできなくなっています。 確認のための情報共有確認には pleiades (Eclipse日本語版) に同梱されている MinGW64 を使っています。 とりあえず、ソースを直しながら sakura.exe がビルドされるところまで確認はしました。 最終的に修正したファイル→ mingw_fix_files.zip ビルド確認手順Windowsでのやり方
path=C:\eclipse4.6\eclipse\mingw\bin;%path%
cd C:\gitroot\sakura\sakura_core
mingw32-make ビルドには超時間かかります。20分くらいかかってるはず。 以上 |
-jN オプションを使うと速くなりますか? |
補足しておくとこの PR 一発で Makefile を完璧なものに仕上げるつもりはなくて、 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
start reviewのまま放置していたコメントがあったので入れときます。
$(RCTOOL) $< sakura_grc.rc | ||
$(RC) --language=0411 $(DEFINES) sakura_grc.rc -o $@ | ||
$(RM) sakura_grc.rc | ||
$(RC) -c65001 --language=0411 $(DEFINES) sakura_rc.rc -o $@ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
すみません。提示した修正案が間違っておりました。
-c UTF8と書かないと動かないみたいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なんだか自分の環境では -c65001
でも -c UTF8
でも、もしくは -c
オプション入れなくても sakura_rc.o の内容は全部同じになりました。環境依存ありますかね?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-c65001 でも -c UTF8 でも
ん?-c65001
?-c 65001
じゃなくて?
・・・コマンドラインの書き方間違ってた気配がw
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-c65001
も -c 65001
もどっちもイケて、どっちも同じ結果でした
@@ -32,7 +32,7 @@ DEFINES= \ | |||
-DUNICODE \ | |||
-DNDEBUG | |||
CFLAGS= -O2 \ | |||
-finput-charset=cp932 -fexec-charset=cp932 \ | |||
-finput-charset=utf-8 -fexec-charset=cp932 \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ちゃんと試せてませんが「-finput-charset=utf-8」はなしでもいけてます。
「-finput-charset=utf8」だと「iconvにそんなエンコード名ないよ」と怒られます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
まぁもともと明示的な指定があったみたいなのでそれを踏襲して utf-8
にした、という経緯があります。無くても BOM 付き UTF-8 なら自動判定してくれそうではありますね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
問題ないっす。
-finput-charset=utf-8
を付けた場合で問題ないことも確認できてます。
何度か言及していますがこの PR は #304 の btool ビルドを最低限チェックできるようにするためのものです。この PR だけで完璧な Makefile を作り上げる目的ではないことをご理解ください。 |
追加情報 ぼくが試した mingw32-make を使う方法だと git に PATH を通せないので、githashの生成がうまくいきません。MinGWでのビルドをサポートしている他のプロジェクト、たとえばgoogletestの場合、appveyor側で PATH からGITを外している模様。 あと、生成された sakura.exe は起動できないっぽいw |
ま~、現状使ってる人が(おそらく)いない Makefile なので、そんなものでしょう。 ただ、btool のビルドを確かめるためには現状では Makefile 必要なのでこの PR 上げた感じです。btool 自体が廃止される気配濃厚ですが。 |
@@ -449,14 +453,12 @@ $(HEADERMAKE): $(HEADERMAKETOOLDIR)/HeaderMake.cpp | |||
$(CXX) $(CXXFLAGS) $(HEADERMAKETOOLDIR)/HeaderMake.cpp -o $@ -static-libgcc | |||
|
|||
.rc.o: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここ間違ってませんか?
rc ファイルのコンパイル結果は res ファイルです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ここは使う人が勝手に決めるものなので、間違ってるとかではないのかな、と思います。
拡張子 res は microsoft が勝手に決めた仕様ですが、これはwindowsの仕様じゃないです。
ちなみに cmakeが吐く Makefile だと .rc.obj になります。
というわけで、rc→oで問題ないんじゃないかと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MinGWではリソースファイルはCOFF obj形式にコンパイルして使います。
res形式はリンクできなかったような?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
そうなんや
これのステータスってどうなんでしたっけ?
|
初めから完璧な Makefile を仕上げる意図はなく、btool のビルド確認およびそれに付随して githash の対応を行うためだけの対応でした。 些細な目的と変更なので、まさかこの PR で理想状態を求められるとは思いませんでしたので、もう疲れてますし、正直どうでもいいかな、と思ってます。 コントリビュータに過度の負担をかける運用は将来必ず破綻することを常に頭に置いてください。 |
了解です。これと重複するPRを投げてよいものか判断つかなかったのでどうしたいか確認したかったです。(このPRに継ぎ足しでやるか、別目的で新たにPR起こすか。) 単純にビルドできる状態にもっていく試行は一度しているので、折をみて別PRを起こす腹積もりでいます。 #306 (comment) |
ちょっとそういうどっちつかずの答えはダメですよ。クローズします。 |
以下の調整を行いました。
注記
自分の手元ではビルド全成功はしません(auto イテレータのところでコンパイルエラーになる。自分の gcc が悪いだけかも。)が、対応前よりはビルド進むようになった感じです。