C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: makefileの作り方


(過去ログ 25 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■11208 / inTopicNo.1)  makefileの作り方
  
□投稿者/ てんと (1回)-(2007/12/10(Mon) 09:26:46)

分類:[C/C++] 

OS:WindowsXP
開発環境:CDT + Cygwin

次のような階層構造を持つCプロジェクトがあります。

/root ┬ /include ─ head.h
   ├ /bin
   └ /source ┬ /subSystem_A ┬ /app_A ┬ /include ─ app_A.h
         │        │     ├ /source ┬ appA1.c
         │        │     │     ├ appA2.c
         │        │     │     └ appA3.c
         │        │     │
         │        │     └ makefile(*1)
          │       │
         │        ├ /app_B ─ …
         │        ├ /app_C ─ …
         │       ├ …
         │       └ makefile(*2)
         │
          ├ /subSystem_B ─ …
          ├ /subSystem_C ─ …
         …
         └ /common ┬ /include ─ com.h
              └ /source ─ com.c


・各サブシステム、それにぶら下がる各アプリケーション1つ1つにmakefileを配置します。
・各アプリのmakefileは、各々のexeが作られるように記述します。
・各アプリは、上層階層の定義などと依存関係があります。

これをeclipse(CDT)上に、rootをプロジェクトフォルダとして作成しました。
このとき、例えば(*1)のmakefileを実行し、app_A/app_A.exeを作り、app_A.exeをデバック・実行する。
この作業を、この階層のままeclipse上で行いたいのです。
このようなときに、それぞれのmakefileはどのように記述すればいいのでしょうか。調べてもどうしてもわからず、困っています。

よろしくお願いします。

引用返信 編集キー/
■11216 / inTopicNo.2)  Re[1]: makefileの作り方
□投稿者/ PATIO (3回)-(2007/12/10(Mon) 11:50:58)
No11208 (てんと さん) に返信
> OS:WindowsXP
> 開発環境:CDT + Cygwin

> これをeclipse(CDT)上に、rootをプロジェクトフォルダとして作成しました。
> このとき、例えば(*1)のmakefileを実行し、app_A/app_A.exeを作り、app_A.exeをデバック・実行する。
> この作業を、この階層のままeclipse上で行いたいのです。
> このようなときに、それぞれのmakefileはどのように記述すればいいのでしょうか。調べてもどうしてもわからず、困っています。

要はEclipseでデバッグをやりたいと言う話なんですよね。
この掲示板は開発環境がEclipseでもOKなのか良く分からないですけれど、
場所的にEclipseを使った事がある、もしくは使っている人は少なそうなので
期待している返事はつき難いかもしれないですね。
Eclipseは最近触って無いのでうろ覚えですが、CDTは確かmakefileの管理も出来たと
思うんですけれど、違いましたっけ?
CDTで言われている作業を行う為のmakefileを新たに作成すれば、解決できそうな気がするのですけれど。
あまり参考にならないレスですみません。

引用返信 編集キー/
■11227 / inTopicNo.3)  Re[2]: makefileの作り方
□投稿者/ てんと (2回)-(2007/12/10(Mon) 13:24:37)
No11216 (PATIO さん) に返信

はい、確かにCDTには自動でmakefileを生成する機能があります。
ただ、これだとコンパイルまでしかできないんです。実行ファイルが作られません。自動makefileには、そもそもその機能がないのかもしれません。1ソースファイルからなる単一階層プロジェクトでは、何とかmakefileを自作できたので、exeまで作れました。

仮に自動makefileで実行ファイルを作る方法があったとしても、あくまでも1プロジェクト1実行ファイルのようなので、今回のような下層階層に1つ1つexeを作らなければならないケースには対応していないように思えるのです。

統合開発環境を使う強みというのは、コーディングの効率化、デバッグの効率化、その2本柱ですよね。そのうちの1本が欠けるというのは、なんとも悔しいです。
引用返信 編集キー/
■11268 / inTopicNo.4)  Re[3]: makefileの作り方
□投稿者/ PATIO (7回)-(2007/12/11(Tue) 12:01:24)
No11227 (てんと さん) に返信
> ■No11216 (PATIO さん) に返信
>
> はい、確かにCDTには自動でmakefileを生成する機能があります。
> ただ、これだとコンパイルまでしかできないんです。実行ファイルが作られません。自動makefileには、そもそもその機能がないのかもしれません。1ソースファイルからなる単一階層プロジェクトでは、何とかmakefileを自作できたので、exeまで作れました。
>
> 仮に自動makefileで実行ファイルを作る方法があったとしても、あくまでも1プロジェクト1実行ファイルのようなので、今回のような下層階層に1つ1つexeを作らなければならないケースには対応していないように思えるのです。
>
> 統合開発環境を使う強みというのは、コーディングの効率化、デバッグの効率化、その2本柱ですよね。そのうちの1本が欠けるというのは、なんとも悔しいです。

えーと、複数のソースファイルでも実行ファイルはできるはずです。
但し、一プロジェクトで一実行ファイルと言うのは基本的な構成だと思うので
それはそれでリーズナブルだと思いますけれど。
それにCDTはまだ発展途上だと思いますし、まだまだフル機能は入っていないと思います。
既に記憶の彼方ですからはっきりとは覚えていませんけれど、そういう場合は、
ワークスペースを一つにしてそれぞれのプログラムはプロジェクトを分けて管理するのだと思います。
ANTなんかで連携させれば、ワークスペース毎ビルドなんて事も出来たと思いますし。
統合開発環境はどれもそうですけれど、使い方をきちんと理解しないと使いこなせないと思います。
発展途上と言う事もあって十分でない部分も勿論あると思いますが、
その環境を使うならその中で出来る事で何とかするしか有りませんし、
気に入らないなら他の環境を模索するのも手なのではないでしょうか?

引用返信 編集キー/
■11284 / inTopicNo.5)  Re[4]: makefileの作り方
□投稿者/ てんと (3回)-(2007/12/11(Tue) 16:54:09)
No11268 (PATIO さん) に返信

CDTというよりはむしろ、makefileがうまく書けないがためにあたっている今の問題だと思ってるんです。これが正しく書けなければどういう環境であっても結局うまくいきませんよね。
CDTのことは脇に置いて純粋にmakefileを作ると考えたとき、これらをどのように記述すればいいのでしょう。
引用返信 編集キー/
■11287 / inTopicNo.6)  Re[5]: makefileの作り方
□投稿者/ PATIO (8回)-(2007/12/11(Tue) 17:44:16)
No11284 (てんと さん) に返信
> ■No11268 (PATIO さん) に返信
>
> CDTというよりはむしろ、makefileがうまく書けないがためにあたっている今の問題だと思ってるんです。これが正しく書けなければどういう環境であっても結局うまくいきませんよね。
> CDTのことは脇に置いて純粋にmakefileを作ると考えたとき、これらをどのように記述すればいいのでしょう。

どのようにと言うか、makefileその物はそこまで複雑なフォーマットでは無いので
書き方がわからないと漠然とかかれてもなぁと言うのが正直な所です。
書き方も色々あって私自身も何種類かの違う書き方をする事があります。
makefileのフォーマットをきちんと調べる事と、一般的な書き方の例をWEB上で調べて見て
それを参考にどう動くのかを追っかけるくらいしか思いつかないです。

一般的なのは、基本のビルド規則を記述しといてsrc側のファイル名を羅列するとか
ほんとに一般的な書き方だと思うんですが、
それだとうまく行かないんでしょうか?
Eclipse上でと言う話が絡んでいるのかなぁ。
いっその事、ANTでビルドの自動化を組んだ方が良いのかも。
Eclipse使うなら割とメジャーな方法だと思います。
この辺は御自分で調べて見てください。
私自身は現在Eclipseは使っていないので調べてまで対応は出来かねますので。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -