• ベストアンサー

VisualC++で外部プロジェクトの設定

VisualC++でMakefileプロジェクトを作成すると、[プロジェクト]-[設定]でビルド設定ができますが、この中で[一般]タブ-[出力ファイル名]と[デバッグ]-[作業用のディレクトリ]の設定がよく分かりません。 これらを特に設定してもしなくても問題なくビルドできるようですが・・・ 何に使用されている設定なんでしょうか? 宜しくお願いします。 MSDN http://www.microsoft.com/japan/developer/library/vccore/_core_create_an_external_project.htm

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.7

#2です。 VS2003なら先の提示方法で動作しているのですが、VC6でしたか.....。 MSのサポートも切れましたし、可能なら移行を推奨。 一応、VC6を久々に起動してみましたが、確かに環境変数は利かないようです。 VC6用のMSDNなどは入れていないので確認していませんが、動かしてみた範囲では、「出力ファイル名」の設定を直接的に反映させる方法は見当たりませんでした。 出力ファイル名の指定は、Makefile を編集して、 その中で勝手にやってくれと言っているように見えます。 VC6 がエクスポートする Makefile を見ても、NMAKE に環境変数 CFG を渡して、内部で動作を切り替えるようにしてるだけのようです。 出力ファイル名等を直接指定しているわけではありませんでした。 (ディレクトリを Makefile 内部で定義して、出力ファイル名はハードコーディングしてる) NMAKE をかませて、その引数でマクロを指定するとか、 出力ファイル名は完全に無視して、Makefile で環境を完結させるとか、そういった用法が VC6 の想定のように思えます。 →出力ファイル名が外部指定したければ、コマンドラインで直接引数に指定する。 ちなみに、VC6用ではありませんが、手元の MSDN には以下ようにあります。 「Visual C++ の概念: プロジェクトの作成および管理  メイクファイル プロジェクトの作成   プロジェクトで指定した出力ファイルは、   ビルド スクリプトの生成するファイルの名前には直接は影響しません。」 提示したように独自に環境変数を指定することはできますが、 やはり何もしなければ単に無視されるようです。

参考URL:
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
main531
質問者

お礼

せっかく設定があるのに使えないのは残念ですが・・・ メイクファイルでなんとかする方向で考えたいと思います。 ありがとうございました。

その他の回答 (6)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.6

#2です。 まず、バッチファイルは本題ではないようですので、簡単にパラメータ引数を取れるように修正していただくとして。 VC.NET2003での例ですが、プロジェクトのプロパティの、 例えば[デバッグ]->[コマンド引数]で、 入力欄右側の[▼]から、<編集>を選択。 →[コマンド引数]ダイアログの[マクロ>>]ボタンを押す。 →利用可能なものがリストで列挙されてます。 ※適用されたときに展開される文字列もあるので、  変数名とあわせて見れば用途が大体わかるかと。 後はこれを、プロセスに渡したい、適切なデータにあわせて、 例えば以下のような形で参照すればよろしいかと。 cmd /C test.bat $(TargetFileName)

main531
質問者

お礼

すみません。 [コマンドライン]に下記の通りに設定すると$(TargetFileName)という「$(TargetFileName)」というファイル名になってしまうんですが・・・ cmd /C test.bat /o $(TargetFileName) またVC++6.0なんですが、<編集>の項目がありませんでした。 色々探してはみたんですが・・・

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.5

#2です。 > この設定でファイルを出力させることはできましたが、 > 出力先はバッチファイルで指定しているフォルダで、 > [出力ファイル名]で指定したフォルダではありませんでした。 ファイルが出力されたのならそれで正常です。 何か勘違いされているように見受けられますが、 実行するツールのコマンドラインで出力ファイルの指定ができなければ、出力ファイル名を指定しても意味がありません。 現在のバッチファイルは単に dir を実行するだけですから、当然そのままのファイル名でファイルが作られます。 > ~\デスクトップ\maketest\test.txt > DIR > "test.txt" この両者が同じものだなどとは、 dir は勝手に判断してくれません。 バッチファイルにパラメータ(dir > %1 等)を取れるようにして、VC側の環境変数$(....)でその出力ファイル名を渡すなりしてください。 そうでなければ、出力ファイル名の指定は単に無視されます。 # ちなみに、本番も dir なのでしょうか。

main531
質問者

お礼

何度もご回答頂きありがとうございます。 この環境変数$(....)というのはどこを調べればいいのでしょうか? MSDNも検索してみたのですが、探し方が悪いのか見つけることができませんでした。 また今回のバッチファイルはあくまでテスト用ですので。 宜しくお願い致します。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.4

#2です。 > c:\windows\system32\cmd.exe "test.bat" この意図が「cmd 経由でバッチファイルが起動したい」ということなら、指定方法が違います。これではtest.bat は起動してないです。「cmd /?」を参照してください。 cmd /C test.bat # ただのテストっぽいので些事ですが、フルパスだと # 環境次第でcmd が見つからないと思います。

main531
質問者

お礼

ご指摘ありがとうございます。 [コマンドライン] cmd /C "test.bat" この設定でファイルを出力させることはできましたが、出力先はバッチファイルで指定しているフォルダで、[出力ファイル名]で指定したフォルダではありませんでした。

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.3

[一般]タブ-[出力ファイル(F)] では、exeファイルをどのフォルダーに出力するかを 指定します。 適当なフォルダーを作って、 指定してみればその中にexeファイルが出来ます。 [リンク]タブ-[出力ファイル名] では、exeファイルの名前を指定します。

main531
質問者

お礼

ご返答頂きありがとうございます。 「Makefileプロジェクト」の場合、プロジェクトの設定の中に[一般]と[デバッグ]のタブのみで[リンク]タブは存在しておりません。 下記の設定で試してみましたが出力ファイルは生成されませんでした。 どうしたらファイル出力することができるのでしょうか? [コマンドライン] c:\windows\system32\cmd.exe "test.bat" [出力ファイル名] C:\Documents and Settings\main\デスクトップ\maketest\test.txt test.bat(バッチファイル) -------------------- DIR > "test.txt" EXIT --------------------

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

作業用ディレクトリの方は、プログラムの実行されるカレントディレクトリを明示的に指定するために使います。 例えば、プログラムがファイルなどを参照する際に、特に指定がなければカレントディレクトリのファイルを見ます。 # GetCurrentDirectry とかも参照 そういったプログラムのデバッグでは、特定のディレクトリを指定してデバッグすることに意味があります。 そうでなければ、デフォルトのままでも特に問題ありません。 # ちなみに、実行時用の設定なので、ビルド自体には影響しません。

main531
質問者

お礼

ご回答ありがとうございます。 これでよく理解できました。

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.1

1つだけ分かります。 出力ファイル名は exeファイルの名前を変更できます。 特に設定しないときに abc.exe が作られるとします。 出力ファイル名を def.exe にすれば、 コンパイル、リンクの結果 def.exe が出来ます。

main531
質問者

お礼

ご回答ありがとうございます。 申し訳ありませんがまだよく分かりません。 「exeファイル」というのは[一般]タブ-[コマンドライン]で指定した実行ファイルのことだと思われますが、自作したプログラムの場合には出力ファイルは[出力ファイル名]で指定したものに関係なくそのプログラム内で指定されると思います。 この設定はどのような場合に作用するのでしょうか?

関連するQ&A

  • VC++のプロジェクトをUnixで実行できるようにしたい

    最近,C++の勉強を始めた素人です。 現在,Visual C++ 2008を使用しプログラムを組んでいます。 そのため,コンパイル等はビルドを実行するだけで簡単なのですが,実行の効率化のため作成したプロジェクトをUnix環境でも実行したいです。 そのためには、makefileを作成して,Unix環境でmakeすればよいと思うのですが,人から譲り受けたプログラムに組み込んで作成しているため、ファイルの数が大規模で、ライブラリなどもありmakefileをどう作ったらいいか分かりません。 素人にもわかりやすい、できるだけ簡単に、VC++のプロジェクトからUnix環境で実行できるmakefileを作成する方法はないのでしょうか? 回答よろしくお願いします。

  • VisualC++でエラーが大量に

    学友がVisualC++で困っています。 私では力になりません 代わりに救済をお願いします。 彼曰く VisualC++2005をインストール。 C++設定で新規プロジェクトをウィザードを使って、MFCアプリケーションスタイルで作成してすぐにビルドを行うとエラーが109件。 エラーの中には構成文エラーや「識別子が定義されていない」などのエラーが含まれます。 原因と対策お願いします

  • C#の同一プロジェクト内でWindowsフォームを継承するには?

    いつもお世話になっております。 現在C#でWindowsアプリケーションを作成している ところなんですが、不明な点が解決できないため、 質問させていただきました。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtsksubclassingforms.asp に書いてある内容を参考にすると、別な プロジェクトで作成したクラスの Windowsフォームを継承するというのは 可能だということはわかったんですが、 同一のプロジェクト内で親クラスの Windowsフォームを子クラスが継承する 方法がわかりません。 ご存知の方がいらっしゃいましたら、 ご教授いただけませんでしょうか?

  • VC++2008でインポートライブラリのスタティックリンクの設定

    VC++2008でインポートライブラリのスタティックリンクの設定 従来のVC++6.0ではプロジェクトのビルド時にインポートライブラリをスタティックリンクさせる場合 「プロジェクト」メニューから「設定」項目を選択し、「プロジェクトの設定」ウィンドウを表示させて、 「リンク」タブをクリックして表示されるページの「オブジェクト/ライブラリモジュール」欄の先頭に、 MyDll.lib(例)とスペースを1つ入力していました。末尾のスペースはMyDll.libとkernel32.libを区切るために必要でした。 これをVC++2008で実現するためにはどの様にしたらいいのですか? VC++2008の「プロジェクト」メニューを探しても「プロジェクトの設定」ウィンドウがありません。

  • VisualC++6.0でdeleteがおかしい

    今頃ですが、VisualC++6.0を使っています。とりあえずはこれで十分なので。で、WindowXPです。 1つのMFCAppWizardメインプロジェクトに対して、3つのライブラリ専用のサブプロジェクトを統合してプログラムを作っていますが、下記の簡単なdeleteもなぜか、出来なくなりました。 long* p; p = new long; delete p; 実行するとdelete pのところで、 NTDLL! 7c9668ad() PRONAME! free + 45 bytes PRONAME! operator delete(void *) + 9 bytes PRONAMEDlg::OnBtnCapturepicture() line 267 + 15 bytes のようなエラーが出てきます(デバッグモード)。 ちょっと気になったのが、最近、VirusBusterをインストールしましたので、実行後に、 'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。 などというコメントが出てくるようになりました。 しかし、ちなみに全く新しいMFCAppWizardテストプロジェクトを作って、他のプロジェクトとリンク等、いっさいせずに簡単なもので動かすと、上記のコード、全く問題なく動きます。 この delete のエラーって、何が原因なのでしょうか。 考えられることがおわかりであれば、教えてください。

  • MSDNのセットアップ方法(ヘルプが見たいだけなんです。)

    Visual Basic 6.0 Professional Editionです。  ヘルプを見ようとしたら、「MSDNをインストールしてください。」と言われました。   インストール作業を開始すると、「Microsoft Developer Network ディスクの 1 を挿入してください」といわれました。   そ そんなCDもってないんですけど、、、、(汗.)   私 ヘルプを見たいだけなのにぃ~ ヘルプを参照できるようにするには、どうすればよろしいでしょうか。 教えてくださいませ。     okweb 過去ログから「MSDN ライブラリ」のURLはわかったのですが、これだと毎回オンラインにしないといけないです。  http://www.microsoft.com/japan/developer/library/default.asp

  • VisualStudio2010の設定について

    VisualStudio2010を使用しC++でプロジェクトを作成しているのですが、 インクルードディレクトリのパスや リンカーの追加のライブラリディレクトリ、追加の依存ファイル 等の設定を毎回手動で行いプロジェクトを作成しているのですが、 設定項目が多く、毎回設定するのが大変です。 インクルードやリンカーの情報を保存しておく方法等ご存知の方がいたら教えて下さい。

  • VisualWevDevelopper2005でASPのデバッグ

    Visual Wev Developper 2005 と IIS5.1(XPProSP2付属) を使用して ASP(ASP.NETではありません)のデバッグを行いたいと思います。 下記サイトを参考にして設定を行いました。 IISの設定はうまくいきましたが、ブレークポイントを指定しても、停止してくれません。 どのような原因が考えられますでしょうか? ASPでのデバッグ環境で悩んでいある方がいらっしゃるようでしたので、こちらに質問いたしました。 なにかヒントがあればよろしくお願いいたします。m(_ _)m http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/vxtskASPScriptDebugging.asp なおソースコードには以下のソースを記述しています。 <SCRIPT id=DebugDirectives runat=server language=javascript> // Set these to true to enable debugging or tracing @set @debug = true @set @trace = true </SCRIPT> プロジェクト(右クリック)→ 開始オプション→デバッガ □ASP.NET のチェックはつけたり外したりしても同じです。

  • EclipseにPhotranプラグイン後の設定方法

    基本的には、 http://www.matsumoto.nuem.nagoya-u.ac.jp/matsumoto/Welcome_files/Photran.pdf で書かれている手順で導入しました。 ただし、上記PDFとは適用バージョンが違うので、設定の部分に違いがあります。 以下適用したバージョンになります。 ------------------------------- Eclipse 3.3.2 CDT 4.0.3 MinGW 5.1.4 MSYS 1.0.10 gfortran 4.4.0 ------------------------------- C/C++に関しては、通常どおりビルド可能ですが、 photranで実行させた場合には、以下のような コンソールが出てくるだけで実行ファイルが作成されません。 今のところHelloWorldのプログラムしか記述してないソース なので、プログラム的な問題ではなく、設定の問題だと思い ますが、解決できないでいます。 **** プロジェクト gtest1 の構成 デバッグ の ビルド **** make all MAKE Version 4.0 Copyright (c) 1987, 1996 Borland International Error makefile 6: Command syntax error Error makefile 11: Command syntax error Error makefile 12: Command syntax error Error makefile 13: Command syntax error Error makefile 14: Command syntax error Error makefile 16: Command syntax error Error makefile 17: Command syntax error Error makefile 18: Command syntax error Error makefile 19: Command syntax error Error makefile 20: Command syntax error Error makefile 22: Command syntax error Error makefile 42: Colon expected Error makefile 43: Colon expected Error makefile 45: Command syntax error *** 14 errors during make *** 回答頂けますようお願い致します。 //PC OSは、WindowsXP Pro SP3になります。

  • error LNK2001: 外部シンボル "_main" は未解決です

    VisualC++6.0で、新規作成→win32 Dinamic-Link Libraryでプロジェクト を作成し、dllファイルを作っています。 今までは、上手くコンパイル出来て、dllを作れていました。 友人の作ったライブラリにリンクして、ソースファイルで そのライブラリの関数を使って、コンパイルすると、 LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。 というエラーが出て困っています。 今、プロジェクトの設定→リンク→アウトプットの エントリポイントシンボルはDllEntryPoint@12となっています。 どうしたら良いでしょうか? どなたかご教授くださると助かります。 ちなみに、ライブラリの関数をコメントにすると、コンパイル出来ます。

専門家に質問してみよう