2014年11月12日

MinGW/Msysのmake.exeを使うな !? 2014

MinGW/Msysのmake.exeを使うな !? 2014
別に、使いたい人は使えばいいんだけど。。。 (爆

MinGW/Msysのコンソール(or mintty(お勧め))又は、
MinGW/Msysのbinにパスを通してMS-DOSコマンドラインで使う時の話。
普通の使い方だけど。。。

make.exe がどうも良くないのだ

正確には「Msysのmake.exe」。

* 依存関係ファイル解析が激遅い orz
gcc系(arm-none-eabi-gcc含む)のコンパイラで「-MD/-MMD」オプション等を使って依存関係ファイルを生成
した場合、依存関係ファイル数がある程度大きくなると解析に膨大な時間がかかり、
なかなかコンパイルが始まらないという現象。
makeが悪いのだった。orz

* 回避方法
2回目以降のmake時に「make -r」とすれば良いらしい。
これだと1回目はやっぱり遅いのだった。 orz
根本的な解決になっていない。

LPCXpressoも困っている様だった :D :
いくつか前のリリースノートに「make -r することにした」、
という記述があった。
その時は、「???」で放置していた。
LPCXpressoも内部で同様にMsysのmakeを使っているのだ。

って事は、1回目はorzなLPCXpresso xD
及び、コンパイルオプションを変更すると必ずフルビルドがかかるので、orz
となる。
orz

* 解決方法:
MinGW/Msysを使わない:
    (1) Cygwin/Linuxなら無問題なので、この際乗り換える。 xD
    (2) 軽量な「gnupack」(注1)にする。(cygwinの軽量版)
MinGW/Msysのmake.exeを使わない:
    最終的にこの方法を選択した。。
    (a) MinGWコンソールか、MS-DOSコマンドラインから「makeを削除します」
        
$ mingw-get remove msys-make
(b) 大丈夫なmake.exeに入れ替える。 http://sourceforge.net/projects/gnuwin32/files/make/3.81/ から、今なら「make-3.81.exe」をゲットして全角や空白を含まないフォルダにインストールします。 (c) Windowsの環境変数PATHに例えば、以下を追加しておきます。 c:\GnuWin32\bin これで大丈夫 (^^)/ と思ったものの、:D 大丈夫かどうかは確認が必要で、もしMinGW/Msysのコンソールからmakeが見えない時は、 ホームの「.bashrc」(.bashrcを使用している場合)或いは、「.profile」に以下を追加しておきます。
export PATH=/c/GnuWin32/bin:$PATH
コンソールを再起動して、whichで確認します。
$ which make
/c/GnuWin32/bin/make.exe
(^^)/ (注1) 現バージョンは古そうなので、アップデートできないならパスした方が良いかも。 例のbashやsshのバグがあるし。
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | Cygwim/MinGW | このブログの読者になる | 更新情報をチェックする

2014年01月19日

MinGW/msys: mintty Shell Here をコンテキストメニューに登録する

MinGW/msys mintty Shell Here をコンテキストメニューに登録する

以下の方のページを参考にさせて頂いて、

ir_takt's diary
msysでインストールしたmintty.exeを、ディレクトリ右クリックメニューから起動する
http://irtakt.hatenablog.com/entry/2013/12/27/203457

MinGW/msys + minttyコンソールを
エクスプローラで右クリックしてコンテキストメニューから
そのフォルダ上で開く方法のメモ。

自分の場合、環境がちょっと特殊(ぐちゃぐちゃ xD)で、
上の方のやり方だとうまくいかなかったので、
以下の方法にしました。

Windows7の場合です。

(1) 「スタートメニュー」-「プログラムとファイルの検索」欄に「regedit」と入力して起動。
(2) 「HKEY_CLASSES_ROOT\Directory\shell」上で右クリック「新規」-「キー」で
     キーの名前を「mintty_here」にする。
	 その中の「(既定)」をダブルクリックして「値のデータ」を「mintty Shell Here」にする。
(3)  「mintty_here」を再度右クリックして「新規」-「キー」でキーの名前を
     「command」にする。
(4)   作った「command」中の「(既定)」をダブルクリックして「値のデータ」に、
	  
C:\どこか\mintty-here.bat %V
を設定。 「C:\どこか」は「msys-here.bat」を置いた任意の場所を指定する。 どこでも可だけど、日本語やスペースを含まない方が無難。 * mintty-here.bat 「mintty-here.bat」という名前でバッチファイルを作ります。 中身はこう、
@echo off
set MOV_FOLDER=%1
call D:\MinGW\msys\1.0\msys.bat -mintty
「msys.bat」はMinGWをインストールしたフォルダにあるものを指定する。 msys2: msys2の場合は上の「call ...」の部分を call d:\msys32\start_shell.cmd 等にする。 * ~/.bashrc 普通にMinGW Shellを起動して、「~/.bashrc」の最後の行に、以下を追加します。
cd $MOV_FOLDER
* 完成 (^^)/ 以上で完了。 エクスプローラで任意のフォルダを選択、右クリック、「mintty Shell here」を選択で起動します。 日本語や、スペース文字を含まないフォルダにしか対応していませんが、 普通はこれで十分。 以下は、開いたmintty上でVimエディタ(MinGWのmsys-vim)を起動した図。 minttyはWindowsのDOS窓に比べるとメチャ便利。 mintty-here.png * .minttyrc minttyの初期化ファイル。 色設定とかぐちゃぐちゃにxD なった時にこれを使って元に戻す。 特に、vimで文字化けが起きたときは、 Term=xxx という行を、「行ごと」削除してminttyを再起動すると直る。 これでハマリました。orz orz orz orz
BoldAsFont=no
Font=MS ゴシック
FontHeight=12
ForegroundColour=255,255,255
CursorColour=255,255,128
CursorType=block
Locale=ja_JP
Charset=SJIS
Columns=84
Rows=42
ConfirmExit=no
CursorBlinks=yes
Transparency=high
OpaqueWhenFocused=no
BoldAsColour=yes
AllowBlinking=no
RightClickAction=paste
CopyAsRTF=no
ClicksTargetApp=no
* Gtags here 上と同じやり方で、Gtagsのタグファイルを作成、更新するコンテキストメニュー を作成するためのバッチファイル。 レジストリ登録時の「command」は「c:\どこか\gtags-here.bat %V」とします。
@echo off
rem --- gtags-here.bat ---

rem --- gtags here ----

cd /d %1

rem --- gtags/global ---
if exist GTAGS goto global
gtags -v
:global
global -u -v
goto end

pause
:end
gtagsとglobalには実行パスが通っている前提です。 ほんとはルートフォルダまでさかのぼって、確認したほうがいいけど、 手抜きのまま。 なんか、コンテキストメニュー・ブームの予感 :D 参考: MinGW の mintty で対話モード、ついでに vim 設定 http://dogwood.skr.jp/blog/2013/11/406/
posted by Copyright (C) avrin All Rights Reserved. at 00:00| Comment(0) | TrackBack(0) | Cygwim/MinGW | このブログの読者になる | 更新情報をチェックする