ライブラリプロジェクト間の依存関係 – プログラミング – Home

ライブラリプロジェクト間の依存関係
 
通知
すべてクリア

ライブラリプロジェクト間の依存関係


谷岡
 谷岡
(@谷岡)
ゲスト
結合: 22年前
投稿: 33
Topic starter  

VS.NET 2003 の1つソリューション内で複数のスタティックライブラリプロジェクト
を作成して複数のライブラリを同時に開発しています。
ライブラリプロジェクト間に依存関係を設定すると一部のファイルを変更しても
正しい順序でビルドされるのですが、依存するライブラリを結合してしまいます。

ライブラリを結合せずにライブラリ間の依存関係を設定して正しい順序でビルド
する方法はあるでしょうか?


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

スタティックライブラリには、リンク工程が存在しないので、
依存関係を設定する必要はありません。
(どんな順でビルドしても問題ありません。)

実行ファイルを生成するプロジェクトを、
全てのスタティックライブラリプロジェクトに依存させればよいです。


返信引用
谷岡
 谷岡
(@谷岡)
ゲスト
結合: 22年前
投稿: 33
Topic starter  

最終的には実行ファイルをビルドすることになるのですが、
開発途中では1つのライブラリばかり修正とコンパイルを繰り返すことが
よくあります。そのときにライブラリAが利用しているライブラリBに手を加えたら
ライブラリAをビルドするときに自動的にライブラリBをビルドすると便利なのですが。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ライブラリA が ライブラリB の機能を使っていた場合に、
ライブラリB を変更したからといって、ライブラリA をリビルドする必要はありません。
(それとも、必要ないのは承知の上で、
何か別の目的があって、リビルドさせたいということでしょうか?)

もちろん、ライブラリA がライブラリB のヘッダを include していて、
そのヘッダが修正されれば、(依存関係を指定しなくても)
ライブラリA もリビルドされます。


返信引用
谷岡
 谷岡
(@谷岡)
ゲスト
結合: 22年前
投稿: 33
Topic starter  

現在作成しているライブラリはプロジェクトごとにカスタムビルドステップで
変更のあったヘッダーファイルとlibファイルを別の場所にインストールしていて
そのライブラリを利用しているライブラリはインストール先を参照しています。

利用しているライブラリのヘッダーを変更してもインストール先のヘッダーには
変更がないので依存関係を設定していないとまったくビルドされません。
依存関係を設定していると必要なファイルだけをビルドしてからインストールし
さらにそのライブラリを利用しているライブラリのビルドも行います。

また、A.lib が B.lib の機能を使っている場合に、B.lib のソースを変更したら
A.lib をビルドするときに自動的に B.lib をビルドしないと B.lib のコンパイル
エラーの発見が遅れるので、できれば B.lib を自動ビルドしてほしいです。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

なるほど。

例えば、適当なダミーEXEプロジェクト C を作り、
C が A と B に依存するように設定し、
いつも C を対象にビルドする、というのはどうでしょう?


返信引用
谷岡
 谷岡
(@谷岡)
ゲスト
結合: 22年前
投稿: 33
Topic starter  

dairygoodsさんアドバイスありがとうございます。

EXEプロジェクトを作ることも考えたのですが、*.libだけではなく*.hもライブラリの
ビルドによって生成されるのと同じようなビルド構成なので、ビルド順によって
コンパイル結果が変わってしまいます。
ライブラリ間に依存関係がないとビルド順序は不定になるのでプログラムが誤動作
してしまう危険性があります。

依存関係を設定しても lib.exe に依存ライブラリのパスを渡さない方法があるとよい
のですが。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

う~ん、あとは、
Makefileを生成して、バッチファイルで順番に実行するとか。

nmake a.libのMakefile
nmake b.libのMakefile


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました