トップページ⇒tech
76コメント41KB

【統合開発環境】Code::Blocks【オープンソース】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/07/17(金) 00:03:33
フリー/オープンソース、マルチプラットフォームの統合開発環境
各種Cコンパイラ、Dコンパイラ、Qt、Gtk+、OpenGL、DirectX、Win32対応

本家
http://www.codeblocks.org/

日本語化
http://sourceforge.jp/projects/foo-doc-jp/wiki/CodeBlocks

Wikipedia
http://ja.wikipedia.org/wiki/Code::Blocks
0026デフォルトの名無しさん2009/08/20(木) 23:11:19
(続き)

これ以降のものは、wxWidgetsのビルドも行って実際にRAD環境を構築して動かしてみた。

■gcc/g++(Min GW)
・コンパイル・リンクがやたら遅い。wxWidgetsのビルド(debug/release, static/DLL, ANSI/UNICODE
 の全組み合わせ8種類)は、俺のボロいノートPCだが12時間も掛かった。
・ソースコードはUTF-8で書けば日本語はマルチバイトもワイド文字列も問題ない。
 L""の形でちゃんとUNICODEとして認識してくれる。
・デバッガーはgdbで相性バッチリ。
・STLは大丈夫そうだったんだが、wstringがコンパイルは通るのにリンカーエラーになる。
 別にSTLPortを利用した方が良いようだ。

■Visual C++ 2008 Express
・コンパイル・リンク速度は普通。wxWidgetsのビルド8種類は4時間弱。
・ソースコードはShift JISで書いてマルチバイトもワイド文字も日本語問題なし。L""でUNICODEと
 認識される。
・STLも問題なし。
・デバッガーはcdbでバッチリ(Visual C++ 2008 Expressに含まれないので、別にダウンロードして
 インストールする必要有)。デバッグ中にカーソルを置いた変数の値をツールチップで表示
 するところまで「やってくれる。
・Visual C++ 2008 Expressをインストールすると、最小インストールにしても、なんだかいろいろ
 インストールされるし、アンインストールしても訳のわkらんフォルダが沢山残るのが気に入らない。
 必要なのはコマンドライン版のコンパイラ/リンカ/ライブラリアン/リソースコンパイラ/デバッガ
 /MAKE 程度のものだけなんだが...

Borland C++は試してない(これまでBorland使ってきて、それとの比較なので...)。

結局、何やかんや言ってもVC++が一番良さそう。C++ Builderと同程度の環境が構築できた。
Code::Blocks自体は安定感が今一歩だけど、出来はすごく良いと思う。頑張って欲しい。
0027デフォルトの名無しさん2009/08/21(金) 00:02:11
CBはrelease buildとnightly buildで評価がぜんぜん違ってくると思うんだが?

開発チームはリリース版の要求が再三あるにもかかわらず、ドキュメントその他
もろもろのめんどくさいことをやるぐらいなら開発してた方がまし、nightly
buildをつかってくれっていってる連中だから。

最近はnightlyがmonthlyになってるからsvnからソースとって自力でコンパイルが
当たり前になってしまった
0028262009/08/21(金) 08:29:41
>>27

> CBはrelease buildとnightly buildで評価がぜんぜん違ってくると思うんだが?

あ,そうなんだ。時間があったら「nightly buildを試してみようと思ってたんだけど,
背中を押されたので早速やってみるよ。サンクス。

まぁ,>>25〜>>26はCBの評価と言うより,組み合わせるコンパイラの評価なんだが,
CB,特にwxSmithが不安定で,ボタンを貼るとウィンドウ一杯の大きさの巨大ボタンに
なったり,貼り付けたコンポーネントを動かすと突然CB丸ごとエラーメッセージ無しで
落ちたりすることが数回あったので気になってた。

> 最近はnightlyがmonthlyになってるからsvnからソースとって自力でコンパイルが
> 当たり前になってしまった

svnも自分のマシンに入ってるから,これもやってみようと思う。

しかしここまでよく出来たRADツールは他にはQt Creator位しかないので,もっと盛り上がって
も良いと思うんだが,ここも書き込み少ないし,なんでかな?てなわけでsageないで書いとこう。
0029152009/08/21(金) 11:53:51
>>28
わしはdmcを使ってる。

デバッガが使えないからデバッグの時だけbcc使うけど。
0030262009/08/21(金) 12:00:04
>>27

早速 2009/08/17 版のNihgtly Buildを入れてみた。
wxSmithでコンポーネントを動かすと突然落ちる問題は解決されてるみたい。

巨大ボタンの問題は残ってるけど,回避方法がわかった。
新規にwxSmithプロジェクトを作ると,サンプルアプリが出来るけど,メインのダイアログ上の
wxBoxSizerを削除してダイアログだけにした状態でボタンを貼ると,ダイアログ一杯に広がった
巨大ボタンになるけど,wxBoxSizerを削除た段階で一度ビルドしてからボタンを貼ると
大丈夫。

ところで,新規にwxSmithプロジェクトを作った時に出来るサンプルアプリを,メインダイアログだけに
したいんだけど,それには,User Template作るのがいいのかな?
0031262009/08/21(金) 12:26:59
>>29

なるほど,そういう手もあるね。
確かにdmcは軽くて速くて魅力的。先祖はZortec C++だし。
で,リソースコンパイラに日本語が通らないって話は本当なの?
0032262009/08/21(金) 12:59:26
>>30
自己レス。情報にウソがあったので訂正。

> 巨大ボタンの問題は残ってるけど,回避方法がわかった。
> 新規にwxSmithプロジェクトを作ると,サンプルアプリが出来るけど,メインのダイアログ上の
> wxBoxSizerを削除してダイアログだけにした状態でボタンを貼ると,ダイアログ一杯に広がった
> 巨大ボタンになるけど,wxBoxSizerを削除た段階で一度ビルドしてからボタンを貼ると
> 大丈夫。

wxBoxSizerを削除してからビルドしてもダメ。
正しくはwxBoxSizerを削除してから,ダイアログのサイズを手動で変更してからボタンを貼れば
大丈夫だった。
0033262009/08/23(日) 00:10:54
>>32
もうちょっと正確に言うと.,ダイアログのサイズをdefault(-1, -1)にしておくとダメのようだ。

>>29
「なるほど」なんて>>31に書いたけど,kwsk教えてもらえると嬉しい。
デバッグはBCCでやっておいて,Releaseバージョンをビルドする時だけdmcを使うって意味?
それとも、dmcのデバッガにbccのものが使えると言うことなの(無理そうだけど)。
0034デフォルトの名無しさん2009/08/23(日) 13:48:46
>>33
BCCをデバッグビルドに、dmcをリリースビルドに使うって意味。あの高い最適化性能を使わなかったらもったいない。

あとリソースコンパイラの噂はよく分からん。リソースコンパイラに日本語通したことがないような気がする。(コマンドには-jってコマンドがあるけど)
0035172009/08/24(月) 15:43:18
>>17, >>19

自己レス。
>>17の後半に書いたような目的別にライブラリの出力先を変える必要は全然なかった。
新規にwxWidgetsプロジェクトを作る時に,ウィザードでちゃんと使うライブラリを指定すれば,
プロジェクト毎のBuild optionに必要なライブラリがちゃんと追加される。
デフォのままで何の問題もない。wizardのスクリプトでこの辺処理してる。
よく出来てるなぁ。
0036332009/09/08(火) 13:38:41
>>34
亀レスだけど,情報サンクス。

で,C::Bの最新Nightly BuildでdmcでwxSmithプロジェクト作るとスクリプトエラーが
出てプロジェクトが作られないんだけど,同じ現象の経験はありませんか?

フリー版のdmcだと,wxWidgets自体,staticのdebug版(Non-UNICODE)しかBuildできないのは
ドキュメント読んでてわかったので,C::Bでもそのように指定してる。

なのになんでだろ。wizardのスクリプト解析しないとダメかな。

聞いてばかりじゃ何なので,dmcスレの方にUNICODEの文字列リテラルをソースに文字列で(文字コードでなく)
直接書く方法をカキコするので,よろしかったら使ってみて。
0037152009/09/08(火) 20:24:49
>>36
お、すげぇ。どうもありがとうです。

Nightly Buildの件はよくわからん。(わしは8.02オンリーなので。)
本家にバグ報告してみてもいいかもしれない。
0038362009/09/08(火) 22:41:14
>>37

別のPCで8.02でもやってみたけど、結果は同じだった。
で、templates/wizard/wxwidgets/wizard.script を開いて眺めてみたら、
コンパイラが dmc の場合の記述がすっぽり抜け落ちてるようだ。
gccだのowだのmsvc*だのの場合の処理はちゃんと書いてあるのに。

dmcでwxSmithプロジェクトのwizardちゃんと動作してる?

それとdmcはもしかしてフリー版じゃなくて製品版使ってるの?
あぁ、何とかしてこの超絶高速高効率コンパイラ使いたいんだが...

それとデバッガーの件はちょっと目途が付いた。
cv2pdb ってソフトがあって、dmcで.exeに埋め込まれたcodeviewデバッグ
情報をマイクロソフトの.pdbファイルに抽出してくれる。

今C::Bだと、コンパイラがVC++のときはデバッガはcdb対応で、それ以外のときは
gdb対応になってるので、Subversionで最新ソース落としてそこだけちょこっと
書き換えてdmcもcdb使うようにしてビルドすれば、コンパイル後に cv2pdb を起動
するようにしておけばうまく行きそう。
0039152009/09/08(火) 23:25:43
>>38
あれ、おかしいな。わしのとこでは普通に動くけど。(フリー版で)
スクリプトがごっそり抜け落ちてるなら自分で書き直すのも手だろうけど、そこら辺は全くわからない。
0040382009/09/09(水) 00:02:07
>>39
何度も申し訳ないけど、フリー版のdmcだとwxWidgetsのライブラリは、static/debug/non-UNICODE 一種類しか
ビルドできてないよね(もちろんmonolithicでもない):フリー版付属のmakeのせいでそういう仕様らしい。

本家のフォーラムで聞いてみるか...
0041152009/09/09(水) 06:56:25
>>40
まぁそうだね。
だから、わしはbccでUnicode版をコンパイルしたのをdmcが作ったファイルとしてる。(フォルダ名を偽装するだけでOK)

しかし、なんなんだろうなそのバグ。
とりあえず次のNightlyが出るまで8.02を使っておきなよ。
0042152009/09/09(水) 21:26:22
どうもwxWidget2.90が来たみたいだね。
コンパイルめんどいから使わないけど(来年の3.0系列リリースまで様子見。)
0043402009/09/09(水) 22:33:45
>>41

> だから、わしはbccでUnicode版をコンパイルしたのをdmcが作ったファイルとしてる。(フォルダ名を偽装するだけでOK)

なんと! bccとdmcの.libはバイナリレベルで互換性があるんだね。

> とりあえず次のNightlyが出るまで8.02を使っておきなよ。

8.02でも同じ現象なので、本家のFORUMにカキコしてみた。

>>41

俺も人柱になる気はないので、もう暫く様子見のつもり。
0044152009/09/10(木) 23:52:58
>>43
いや、互換性というか、ただの偶然。だからいつでもそうだとは限らないかも。
0045デフォルトの名無しさん2009/10/08(木) 08:06:01
大したことじゃないんだけど,C::BのエディタでインラインでIMEを使えるように
する方法はないのかな? 知ってる人いません?
0046デフォルトの名無しさん2009/10/11(日) 14:02:01
The 10 October 2009 build (5859) is out.

http://forums.codeblocks.org/index.php?PHPSESSID=aac2585ab388ab5ea56484145d65f2c3&topic=11311.0
0047デフォルトの名無しさん2009/10/21(水) 10:04:06
今までwxWidgetsプロジェクトを作る時はwxSmithだったんだけど,wxFormBuilderを試してみた。
やり方をテキトーにまとめると,

1.wxFormBuilderをインストール(あたり前)
2.C::BでwxWidgetsプロジェクトを作る時にwxFormBuilderを選択する。
3.プロジェクトフォルダ内に.fbpファイルが出来るので,これをwxFormBuilderで開く。
  「.fbpのバージョンが古いので自動的に変換するか?」と言うメッセージが出るが
  OKしてしまって構わない(C::B側で.fbpファイルを開くことは二度とないので)。
4.サンプルアプリのダイアログ/フレームが出来上がっているので,GUI Editor上で
  いらないものを削除したり,新たな部品を追加したりして編集。イベントハンドラの
  名前も設定できる。
5.wxFormBuilderでプロジェクトを保存。
6.F8キーまたは,ツールパレット上の歯車みたいなアイコンを押してコード生成。
  C::Bが作った基底クラスを記述した.cppと.hが更新される。
7.wxFormBuilderで[Tools]⇒[Generate Inherited Class]を実行してはいけない。
  せっかくC::Bが作った継承クラス側の.cpp/.hが上書きされてしまうため。
8.C::Bのプロジェクトを開き,基底クラス側の変更点を継承クラス側にコピペ
  し,イベントハンドラの中身を記述する。増えたメンバー変数は自動的に継承
  されるので,継承クラス側の.hを編集する必要はない。.cppだけに実行コードを
  書けばよい。
9.上のコピペ作業はGUIを変更するたびにやる必要がある(チト面倒)。
0048デフォルトの名無しさん2009/10/21(水) 10:04:26
(続き)

てなわけで,wxSmithより手数が増えて面倒なのと,.h/.cppのファイル数が通常の
倍に増えて,大きなアプリだと管理がややこしくなるのが欠点だけど,wxFormBuilder
自体の使い勝手は良いし,wxSmithより完全なWYSIWYGになっているのが嬉しい。

それとwxSmithでは,固定サイズのDialogやFrameを作ると,sizerを置いたとたんに
勝手に小さいサイズにシュリンクしてしまう欠点があり(中にGUI部品が置きにくいし),
実行時に固定サイにするだけならコンストラクタの最後の方に SetClientSize() で
サイズを設定すれば良いものの,GUI編集時には固定サイズが全く無視されるが,
wxFormBuilderでは吐くコードの違いから,そんなことは起こらない(実際には
wxWidgets側の問題なんだろうけど)。

どちらが良いかは...微妙。
0049デフォルトの名無しさん2009/11/14(土) 18:06:12
The 11 November 2009 build (5911) is out.

ttp://forums.codeblocks.org/index.php/topic,11504.0.html
0050デフォルトの名無しさん2010/01/03(日) 21:56:28
The 02 January 2010 build (6023) is out.

ttp://forums.codeblocks.org/index.php/topic,11784.0.html
0051デフォルトの名無しさん2010/01/21(木) 00:15:27

The 16 January 2010 build (6088) is out.
ttp://forums.codeblocks.org/index.php/topic,11875.0.html
0052デフォルトの名無しさん2010/02/27(土) 19:42:18
Visual Studioつかってるんだけど、OS Xでも遊んでみようと思っている。
別のコードを横に二つ並べたりするのって、
これはできないのかな?

スプリットの垂直みたいな感じで。
0053デフォルトの名無しさん2010/03/03(水) 19:36:50
>>52
タブをつかんで移動させてみて。

…いつもの人が来ないので。

The 27 February 2010 build (6181) is out.
http://forums.codeblocks.org/index.php/topic,12098.0.html
0054デフォルトの名無しさん2010/03/04(木) 21:20:45
>>53
そのリンクにある最新版使ったらできた。

公式で配ってるのは対応してないんだね、
0055デフォルトの名無しさん2010/05/23(日) 22:45:26
The 22 May 2010 build (6271) is out.
http://forums.codeblocks.org/index.php/topic,12593.0.html
0056デフォルトの名無しさん2010/06/04(金) 19:00:26
いまさら感がかなりでてるがver10.05正式版がきてるね。
0057デフォルトの名無しさん2010/10/18(月) 20:22:14
Code::Blocks 日本語化 10.05対応版
http://hp.vector.co.jp/authors/VA053752/code_blocks.html

#テトラさん、ありがとうございます。
0058デフォルトの名無しさん2010/10/25(月) 18:54:18
eclipseに比べてどこが違うの?
0059デフォルトの名無しさん2010/10/25(月) 19:23:21
速い
0060デフォルトの名無しさん2010/11/13(土) 11:53:23
10.05を日本語化せずに使用、D言語用
新規ファイルに 3D と全角で打ち込もうとするとハングするんだが
俺だけ?

他の文字を先に打つと通ったりもするんでクリチカルじゃないんだけどさ
0061デフォルトの名無しさん2011/03/01(火) 14:52:33.71
ほしゅ
0062デフォルトの名無しさん2011/05/27(金) 10:37:10.79
Code::Blocksにgcc4.5を組み込む方法について書かれたサイト(英語サイトでも可)
を知ってたら教えてください。
0063デフォルトの名無しさん2011/05/27(金) 21:14:07.17
>>62 です

ttp://forums.codeblocks.org/index.php?topic=14212.0

ここで良いですかね。でも英語がw
0064デフォルトの名無しさん2011/05/28(土) 09:51:59.83
MinGW単独インストールすりゃいいだけだ
4.5.2動いてる

デフォの場所なら、特に設定なしで認識できるはず
付属版じゃないほうな
0065デフォルトの名無しさん2011/05/28(土) 16:44:53.42
ありがとうございます。

ところで、「付属版じゃないほう」というのは何についてでしょうか?
くだらん質問ですみませんが、お願いします。
0066デフォルトの名無しさん2011/05/28(土) 18:16:27.21
C::BのMinGW付属版とそうじゃないやつ
ついでに言うと、デフォの場所ってのは、MinGWのデフォ指定先のこと
自分はいじってたんだけど、C::Bで設定するとき、MinGWの
デフォインスト先がデフォでコンパイラーの設定に出てきたので
そうじゃないかと思った。
0067デフォルトの名無しさん2011/05/28(土) 23:22:20.85
どうも、ありがつございます。
0068デフォルトの名無しさん2011/05/29(日) 17:38:20.62
あの、MinGW付属版じゃないやつって、ソースコードをgcc4.5.2でコンパイル
するって話でしょうか・・・
0069デフォルトの名無しさん2011/06/04(土) 15:33:16.39
(1)ttp://tdm-gcc.tdragon.net/downloadからtdm-gcc-4.5.2を
   ダウンロードしてインストールする。デフォルトでは C:\MinGW32
   に(バイナリが)インストールされる。

(2)ttp://www.codeblocks.org/downloads/26からCode::Blocks10.05
をダウンロードしてインストールする。デフォルトでは
C:\Program Files\CodeBlocksフォルダにインストールされる。
   
   ちなみに、私は間違ってMinGWがバンドルされた版をインストール
   してしまった。

(3)Code::Blocksを立ち上げ、「Setting」→「Compiler and Debugger・・・」
   →「Toolchain executables」タブを選択。

(4)一番上のCompiler's installation directoryを
   (1)の 「C:\MinGW32」に設定

(5)また、「Compiler settings」タブを選択して

   Have g++ follow the coming C++0x ISO C++ language standard [-std=c++0x]
にチェックマークを入れる。

(6)(2)でMinGW (gcc4.4.1)がバンドルされた版をインストールしてしまったので、
    恐ろしいことにC:\Program Files\CodeBlocks内のMinGWフォルダを手作業でごっそり
    削除(・_・;)


これで、TDM-gcc4.5.2のC++0xがCode::Blocksで使えるようになりました。
0070デフォルトの名無しさん2011/06/26(日) 19:44:10.60
だれか、STLportを使える方法を教えてくれませんか?
0071デフォルトの名無しさん2011/07/31(日) 10:25:34.72
ちょっと長くなりますが、どなたかアドバイスお願いします。

環境 Windows XP

(1) D:\Program Filesフォルダを作成して、このフォルダ内にCode::Blocks 10:05
(gcc4.4.1-tdmをバンドルしていない版)をインストール

(2) D:\MinGW32にgcc4.5.2-tdmをインストール

(3) D:\にSTLport-5.2.1をインストール

(4) Setting → Compiler and debugger..→ Toolchain executable を選択し、
  「Compiler's installation directory」を D:\MinGW32に設定

(5) STLportのiostream.hは使わないように設定。stlport\stl\config\user_config.h
  内の「#define _STLP_NO_IOSTREAMS 1」を有効にする。

(6) Setting → Compiler and debugger..→ Search directries → Compiler で 
  現れるディレクトリ設定画面で

D:\MinGW32\include
D:\MinGW32\lib\gcc\mingw32\4.5.2\include
D:\MinGW32\lib\gcc\mingw32\4.5.2\include\C++
D:\Stlport-5.2.1\stlport

の順番で入力
0072デフォルトの名無しさん2011/07/31(日) 10:27:25.40
続き↓

以上の設定の上でCode::Blocks上でビルドすると、以下のようなエラーを最初に40余りの
コンパイルエラーが出てしまいます。

D:\STLport-5.2.1\stlport\stl\_ioserr.h|9|error:
#error STLport iostreams header cannot be used; you chose not to use iostreams
in the STLport configuration file (stlport/stl/config/user_config.h).|
   ・・・
VC++2008だったら最初にあらわれたincldeファイルが優先されて、それ以後のディレクトリ
が無視されるので(と理解しているのですが)、(6)の設定で問題なくビルドできるのですが、
Code::Blocksにはこのようなディレクトリの優先順序がないんでしょうか?それとも別の
ところに原因があるのでしょうか?
0073デフォルトの名無しさん2011/07/31(日) 10:29:43.08
>VC++2008だったら最初にあらわれたincldeファイルが優先されて、それ以後のディレクトリが無視されるので

それは無いと思う
別の所で問題があってw
たまたまうまくいっていただけかと
0074デフォルトの名無しさん2011/07/31(日) 10:43:29.82
ありがとうございます。

>それはないと思う

そうですか。ちなみにエラーは_ioserr.hというファイルの

*
* This file is included in every header that needs the STLport library to be
* built; the header files mostly are the iostreams-headers. The file checks for
* _STLP_USE_NO_IOSTREAMS or _STLP_NO_IOSTREAMS being not defined, so that the
* iostreams part of STLport cannot be used when the symbols were defined
* accidentally.
*/
#if defined (_STLP_NO_IOSTREAMS)
↓
# error STLport iostreams header cannot be used; you chose not to use iostreams in the STLport configuration file (stlport/stl/config/user_config.h).

#elif defined (_STLP_USE_NO_IOSTREAMS )
# error STLport iostreams header cannot be used; your compiler do not support it.
#endif

の行で発生してます。英語がわからないけど、STLportをビルドしないといけないんですかね。
0075デフォルトの名無しさん2011/09/17(土) 23:16:22.25
Code::Blocks + MinGW で環境構築してるんだが
コンパイラがboostのインクルードファイルを見に行ってくれない
Makefileは自動生成しないにチェック入れてる。

Makefileの一部
# Makefile
TARGET = BoostAsio.exe
SRCS = BoostAsio.cpp
OBJECTS = BoostAsio.o

RM := rm
CXX := mingw32-g++.exe
CC := mingw32-g++.exe

CPPFLAGS = -O2 -Wall -D_WIN32_WINNT=0x0601 -I/c/Boost/ ← Boostのヘッダファイルがある場所
LDFLAGS = -L/c/MinGW/lib \
…
(コード)

---
コンソールからmake実行するといけるのにIDEからだとNo such file or directoryと出る
0076デフォルトの名無しさん2011/09/18(日) 00:02:48.79
すいません自己解決しました
makeのデフォルトルールに余計なものが混じっていて、コンパイラが対象ファイルを見に行けなかったみたいです
■ このスレッドは過去ログ倉庫に格納されています