いつもお世話になっています。ミミです。
Visual C++ 6.0と、eMbedded Visual C++ 4.0を使用しています。
( 今回は VC++言語とはちょっと離れてしまいますが、何卒ご容赦願います。)
IDEの「ツール」-「オプション」を選択して、その中の「ディレクトリ」タブ内にて、
コンパイラが参照するディレクトリを指定できますが、
今、この値をプログラムで操作する方法を調べています。
(簡単な操作で、ディレクトリの環境を変更出来るようなツールを作りたいのです。)
eVC4.0の場合、レジストリ内の
HKEY_CURRENT_USER\Software\Microsoft\CEStudio\4.0\evc\Build
System\Components\Platforms\[ここにCPU名]\Directories
内に記録されている事は確認できました。
そして、このキー内の値をプログラムより(RegSetValueEx()を使用して)
書き換えることはできます。
ただ、eVC4.0 を起動して終了すると、eVC4.0がどこかに保有している値で、
レジストリを書き換えてしまうみたいなのです。
(1)自分でプログラムで設定し、regeditで確認。
(2)その後 eVC4.0を起動・終了。
(3)改めて regeditで確認すると、設定前の状態に戻されている。
http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/vsintro7/html/vxurfVCDirectoriesProjectsOptionsDialog
Box.asp
には、Visual Studio.NETについて説明があり、VCComponents.dat について記載されていま
した。.NET では、どうやらプロパティで設定できるみたいですね。
ですが、今の環境には VCComponents.datはおろか、VCProjectEngine.dll さえも
見つかりません。
ディレクトリの情報がどこに保存されているのか、教えて頂けませんでしょうか?
今は eVC4.0のみですが、eVC4.0で実現できれば、VC6 も同様に、
プログラムから制御したいと考えています。
ご指導、よろしくお願いいたします。
追記です。
ヘルプには、以下に示すタイトルで「設定方法について」の記載があります。
eVC4付属のヘルプでは、「ファイルの場所の指定」
VC6付属のMSDNでは、「ディレクトリの設定について」
肝心の設定方法がどこ探しても見つかりません。
質問内容への回答になっていませんけれど。
IDEのディレクトリタブに関してはプロジェクト毎に設定する必要があるような物を
入れるべき場所ではないと考えているのでこの部分を書き換える必要が頻繁にある方が
問題な気がします。
プロジェクト毎に必要な部分はプロジェクトの設定の方に入れた方がリーズナブルですし、
私個人としてはプロジェクト丸ごと渡す場合には、環境の指定も同時にできるのでかえって
良いと考えています。
テクニック的な興味で行っているのであれば意義はあると思うのですが、
そうでないなのであれば運用方法の方でカバーした方が良い様な気がします。
ミミです。
PATIO様、いつもご返信ありがとうございます。
現在は複数のプロジェクトをeVC4で開発していますが、
参照するDLLが持つLIB等、毎回毎回設定し直している状態です。
>プロジェクト毎に必要な部分はプロジェクトの設定の方に入れた方がリーズナブルですし、
…なるほど、とても参考になります。
私が現在行っているのは、どちらかというとアブノーマルなのですね。
個人的には「こういうものだ」と割り切っていましたので、むしろ今までが非標準と
なると、運用面で改善の余地がありそうです。
1つ質問です。
「プロジェクト」-「設定」で表示される、「プロジェクトの設定」画面の、
リンクタブ中の オブジェクト/ライブラリモジュールに、*.libといった
ライブラリパスを、指定するのだとは思いますが、
*.h といったインクルードパスについては、リソースタブ、MIDLタブのうち、
どちらに設定すべきなのでしょうか?
「?」ボタンよりヘルプを見ても、判断ができませんでした。
>テクニック的な興味で行っているのであれば意義はあると思うのですが、
個人的には乗りかけた船なので、未決終了にはしたくないのですが、
やはりどこ探しても情報がないですね。あきらめるしかなさそうです。
# MSに聞いてもインシデント請求されそうです。。。
# 過去に開発環境の質問をした時も、「詳しい情報は有料です」と何も答えてくれませんでした
し。。。
> *.h といったインクルードパスについては、リソースタブ、MIDLタブのうち、
> どちらに設定すべきなのでしょうか?
VC6ならば、
プロジェクト→設定→C/C++タブ→カテゴリ-プリプロセッサ→インクルードファイルパ
ス
のテキストボックスにパスを入れればいいのですが、eVC4はわかりません。
libの場合も、
カテゴリ-インプット→追加のライブラリパス
のテキストボックスにパスをとおしておく必要があります。
eVCは、前のバージョンまでしか触っていませんけれど、
VC6と概ねおなじだったような気がします。
タブと言われているので多分VC6と同じでしょう。
Blueさんの書き込みを参考にされるとよろしいかと思います。
eVC4が.netと同じ構成ならC/C++の全般に追加のインクルードディレクトリがあります。
.netから追加のディレクトリパスは全般に移動したみたいですね。
Blueさん、PATIOさん、ありがとうございました。
今回は eVC4が主たる開発環境ですが、PATIOさんの仰るとおり、
eVC4もVC6も、操作的にはほぼ同じです。
(唯一違うのは、eVC4は複数起動できるという点でしょうか)
ですので、Blueさんのご指導にあった件で eVC4でのコンパイル
を試してみました。
結果、正常にコンパイルが通りました。
プロジェクトの設定配下に設定するのが、標準という事で
以後の仕事を進めたいと思います。
ありがとうございました。
#本題に関係ないけど、少しツッコミ。
> (唯一違うのは、eVC4は複数起動できるという点でしょうか)
VC6も複数起動できます。
エクスプローラーなどから、.dswや、.dspをダブルクリックしての、
ファイルの関連付けでの起動の場合、すでに起動しているVC6上でファイルを開きますが、
1つVC6を起動した状態で、スタートメニューから、VC6を選択して起動すると、
複数のVC6を起動させることが可能です。
私は、たまに複数のVC6を起動しています。
(例えば、実際のコーディングしているソフトと、テスト用の簡単なプログラムなど)
私的にはVC6の複数起動は極力しないようにしています。
複数立ち上げて作業しているとたまにプロジェクトの設定内容が変になるみたいなので。
どうも複数立ち上げをきちんと意識して作られていないような気がします。
まあ、同じ関連は一つのワークスペースに収めてしまえば、
複数起動しなくても何とかなってしまいそうですけれども。