Meadow+gccでC++のコンパイルとか

VC++しか使ったことない&CもC++もそんなに書けない&Windowsくらいしか触れませんよheheheというアレ具合なので想像してたより苦労した。

Cygwinのインストール

Cygwinからsetup.exeをダウンロード。c:\cygwin以下などにインストール。入れたのは

とその周辺。
インストールしたら環境変数のpathへC:\cygwin\binを追加。.emacsに以下の記述を追加。

;; cygwin
(setq explicit-shell-file-name "bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c")
(modify-coding-system-alist 'process ".*sh\\.exe" '(undecided-dos . euc-japan))
;; argument-editing の設定
(require 'mw32script)
(mw32script-init)
(setq exec-suffix-list '(".exe" ".sh" ".pl"))
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.:()-")

環境変数の変更をMeadowに教えるためにWindowsの再起動が必要。
参考

コンパイル

拡張子が.c, .h, .y, .lexのものをMeadowで開くとCモード、.C, .H, .cc, .hh, .cpp, .cxx, .hxx, .c++, .h++のものだとC++モードに移行する。どっちもcc-modeらしい。
たとえばこんなのを書いて

#include <iostream>
using namespace std;
int main(){
  cout << "こんにちは!!\n";
  return 0;
}

test.cppとかいう名前だったとする。
これを編集中にM-x compileすると、ミニバッファに

Compile command: make -k

と出る。MakefileがあればEnter叩くだけでコンパイルが始まる。あるいは、

Compile command: g++ -g -o test test.cpp

などとしてコンパイルしてもいい。-gオプションつけておけばgdb使ってデバッグできる。いちいちM-x compileするのが面倒だったら次の記述を.emacsに足しておくとC-c cでコンパイルできるようになる。

;; compileを楽に
(defun my-c-common-mode ()
  (define-key c-mode-base-map "\C-cc" 'compile)
  (define-key c-mode-base-map "\C-ce" 'next-error)
  (c-toggle-hungry-state 1))
(add-hook 'c-mode-common-hook 'my-c-common-mode)

参考

実行

(ここでつまづいてたとか恥ずかしくて言えない…)
Makefileでrunとかすると実行させられるような気がするけどよく分からない。何せ今ちょっとググった程度の知識なので…
Meadow上からだと、まずM-!してシェルを呼び出す。

Shell command:

例えばさっきコンパイルしたやつを実行したいとき、コマンドプロンプトのノリでそのまま

Shell command: test.exe

などとしてもダメ。shとかbashとかにはカレントディレクトリを"./"で教えないといけない。なので次のようにするのが正解。ミニバッファに実行結果が出力される。

Shell command: ./test.exe

もちろん拡張子は省略可。ウソつきました。拡張子要ります。