- - PR -
sedコマンドを使って選択的に置換する方法について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-16 20:38
たいそうなconfigureスクリプトを書かなくても、自分のやりたい ことだけやるスクリプトを書けばよいのであ?
とりあえず、makeだけでは解決できない(解決方法があるかも しれないけれど知らない)問題を解決するにはいいでしょうね。 | ||||||||||||
|
投稿日時: 2005-02-17 12:52
ぽんすさん、アドバイスありがとうございます。
configureの作り方について少し調べていたのですが、やはり時間がかかりそうだったのと、作業量が増えそうだったのであきらめちゃいました。。 で、再びmakefileで実現できる方法を探していたところ、どうやら出来そうな感じになってきました。 以下が最新の状態です。
この状態でCCC_AAA.cだけは望んだ結果が得られました。ただ、"sed","cp","rm"などのコマンドをソースファイル1つあたり50回ほど呼び出すことになるのでmakeが遅くなりそうですが…。まだ多少修正が必要な部分などがあるので、これらがクリアでき次第、またこちらにフィードバックさせていただきます。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2005-02-17 13:10
ん〜、シェルスクリプトというものを全くご存知ないのでしょうか?
Cのソースを書くとか、Makefileを書くとかよりも、ずっと 容易に習得できるものですが... シェルスクリプトを使うのと使わないのとでは作業効率がまるで 違ってくる場面がしばしば存在するので、覚えておいたほうが よいかと思うです。 # べつにシェルスクリプトの達人にならなくてもよくて、 # 1時間くらい『UNIXプログラミング環境』か何か読めば # いいんじゃないかなあ... | ||||||||||||
|
投稿日時: 2005-02-17 14:55
お疲れ様です。
…よくわかっていません。。 ぽんすさんのご提案がよくわからないのですが、configureというのはつくらずにシェルスクリプトを書いてそれをmakefileから実行させればよい、というお考えなのでしょうか? configureを作るのをあきらめたのは、この中でデバッグオプションやパスやその他いろいろの設定を記述しなければいけないのでは?と考えたからです。現在の手書きのmakefileとおなじ設定を再現できるかどうかわからないため、遠回りになるという印象を持ちました。 ぽんすさんのご提案はconfigureを作る/makefileを作成させるということとは別の話なのでしょうか? | ||||||||||||
|
投稿日時: 2005-02-17 20:56
configureはふつう、シェルスクリプトですが...
でもそんなことはどうでもよくて。 私が言っているのは、Utaさんが書かれている > configure(シェルスクリプト) → makefile作成 → make ということです。 | ||||||||||||
|
投稿日時: 2005-02-18 09:49
ぽんすさんが既に仰っていますが、configureというのは通例上そのように呼ばれている
(ファイル名も[configure]となっている)だけで、中身はシェルスクリプトです。 まぁOpenSSL等のようにPerlスクリプトを利用するものもありますが。 configureの役割は、アプリケーションをインストールする環境 (OSの種類やバージョン・前提のソフトウェアの有無やパス 等々)を調べて、 それに合わせて Makefile を作成することです。 オープンソースのアプリケーションでは、様々な人が様々な環境で利用できるように configureスクリプトで複雑な処理をしていますが、 juiceさんのアプリケーションをインストールする環境は限定されていると予想できますので、 簡単なスクリプトを書いておけばいいのではないでしょうか。 具体的には、下記の2点でよいのかと。 1.ソースファイル・ヘッダファイルをリネームして[change]ディレクトリにコピー 2.[change]ディレクトリのソースファイル内の #include 部分を編集する ↑ その際条件分岐等で書き換えるものと書き換えないものを区別する なお、私は構築・運用・保守側の経験しかありませんので この方法が開発の作法的によいものなのか全く保証できません。 ソースの編集をしてる時点でconfigureスクリプトの担当範囲を 超えているような気もしますし。 当スレッドの初期にMMXさんが
と仰っている点に関しても、私には何のことだか解りかねますが 調査してみるとよいのではないでしょうか。 | ||||||||||||
|
投稿日時: 2005-02-22 15:44
ぽんすさん、Utaさん、アドバイスありがとうございます。
お返事に間が空いてしまい申し訳ありません。 どうも私が組み込みSWの開発をしているためかそれともただ単に私の知識不足なのか(これが最も大きいようには思いますが)お二方のアドバイスが十分に理解できません。。。すみません。。
ということは、 configureを作る(書く)→configureがmakefileを作る→makefileがコンパイルを行う ということですよね? つまり、コマンドラインで"make"と入力したときに実行されるのは一番最後の「makefileがコンパイルを行う」という段階のみである、という理解でよろしいでしょうか? また、この方法を採用し、"やりたいことをconfigureでやった"場合、"configureがmakefileを作る"時に、一緒にソースも改変し、目的のソースが出来上がってからmakefileをもとにコンパイルが行われ、makefileが出来てからはソースの改変は行われないと理解しています。コンパイルのたびにコピー→リネーム→編集が自動的に行われるようにはならないのでは、と考えたのですが間違っているでしょうか? MMXさんのご提案に関しては以下のように解釈していました。
また、makefileのほうは、前回ご報告させていただいた時点でほぼ望みどおりの動きをするものが出来ており、現在は以下のような状態になっています。
私自身の知識不足のため具体的な方法までたどり着けなかったこと、またその他の事情によりたくさんのアドバイスをいただいたにもかかわらず、それらを反映させることが出来ず申し訳ありません。頑固なやつだとお思いの方もいらっしゃるかと存じますがご理解くださいませ。 シェルスクリプトについてはこの件とは別にでも勉強したいと考えております。いろいろと教えて頂き、ありがとうございました。 | ||||||||||||
|
投稿日時: 2005-02-22 15:44
ぽんすさん、Utaさん、アドバイスありがとうございます。
お返事に間が空いてしまい申し訳ありません。 どうも私が組み込みSWの開発をしているためかそれともただ単に私の知識不足なのか(これが最も大きいようには思いますが)お二方のアドバイスが十分に理解できません。。。すみません。。
ということは、 configureを作る(書く)→configureがmakefileを作る→makefileがコンパイルを行う ということですよね? つまり、コマンドラインで"make"と入力したときに実行されるのは一番最後の「makefileがコンパイルを行う」という段階のみである、という理解でよろしいでしょうか? また、この方法を採用し、"やりたいことをconfigureでやった"場合、"configureがmakefileを作る"時に、一緒にソースも改変し、目的のソースが出来上がってからmakefileをもとにコンパイルが行われ、makefileが出来てからはソースの改変は行われないと理解しています。コンパイルのたびにコピー→リネーム→編集が自動的に行われるようにはならないのでは、と考えたのですが間違っているでしょうか? MMXさんのご提案に関しては以下のように解釈していました。
また、makefileのほうは、前回ご報告させていただいた時点でほぼ望みどおりの動きをするものが出来ており、現在は以下のような状態になっています。
私自身の知識不足のため具体的な方法までたどり着けなかったこと、またその他の事情によりたくさんのアドバイスをいただいたにもかかわらず、それらを反映させることが出来ず申し訳ありません。頑固なやつだとお思いの方もいらっしゃるかと存じますがご理解くださいませ。 シェルスクリプトについてはこの件とは別にでも勉強したいと考えております。いろいろと教えて頂き、ありがとうございました。 |