• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビルドから除外されたソースのコンパイル)

ビルドから除外されたソースのコンパイル

このQ&Aのポイント
  • ビルドから除外したソースファイルを単独でコンパイルする方法を考案しましたが、ソリューションエクスプローラのメニューでのコンパイルができない問題があります。
  • ビルドから除外したソースファイルを一つにまとめることでビルド時間を短縮しましたが、単独でコンパイルする方法が必要です。
  • IDEから簡単な操作でビルドから除外したソースファイルをコンパイルする方法はありますか?

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.6

#4です。 バッチを作って、外部ツールに登録しておくだけだと思いますが... 引数に$(ItemFileName)を指定すれば、選択しているソースファイルをバッチに渡せます。

katorea21
質問者

お礼

ご回答ありがとうございます。 確かにその通りです。そういう技があったのですね試してみることにします。

その他の回答 (8)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.9

>ただ、たったそれだけのために余分な紛らわしいプロジェクトを1つ追加してしまうことは、大人数で開発を行っている現場ではなかなか許されないのです。勘違いしてしまう人がいないとも限りませんから。 それをいってしまうなら、今の様な状態やその対処方法をふつうだと勘違いする人がいるかもしれないことの危惧もされた方がよいかと思いますが(正直いえば、紛らわしい対処方法をすでにやっておいて何をいまさらって感じ)

回答No.8

> プロジェクトが2つ出来るということは、本目的のためだけにプロジェクトを > 切り替えなければならないという面倒が生じます。 ソリューションの中にもうひとつ個別コンパイル用プロジェクト"single-compile"を起こし、 「XXX.cppだけコンパイルしたいときはsingle-compileからXXX.cppを選んで"コンパイル"してね」 だけのことやと思うけど、これがそんなに面倒ですか?

katorea21
質問者

お礼

面倒ではありません。ただ、たったそれだけのために余分な紛らわしいプロジェクトを1つ追加してしまうことは、大人数で開発を行っている現場ではなかなか許されないのです。勘違いしてしまう人がいないとも限りませんから。

回答No.7

回答No.2 の「プロジェクトを2つ作る」方法は、別に既存のプロジェクトファイルの構成を壊してはいないように思えますが。

katorea21
質問者

お礼

確かに既存のプロジェクトの構成は維持していますが、プロジェクトが2つ出来るということは、本目的のためだけにプロジェクトを切り替えなければならないという面倒が生じます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.5

そういう事のできるVisualStudioのプラグインでも作るしかないんじゃないでしょうか。 単独でコンパイルしたいというのは >[1つにまとめたソースファイルのイメージ] >#include "src001.cpp" >#include "src002.cpp" >#include "src003.cpp" >・・・ >#include "src999.cpp" 上記のsrc001.cpp等なんでしょうけど、今の状況で単独コンパイルできるようにする方が問題だと私は思いますが(コンパイルはできてもリンクでエラーが発生するとか出てきそうだから)。

katorea21
質問者

お礼

ご回答ありがとうございます。 プロジェクトの設定としてはsrc001.cpp等は全てビルドから除外していますので、リンクの対象とならないような動作を期待しています。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

ソースコードの構成その他に根本的な問題があると思いますが、おそらくそれはわかっていると思うので... > もちろん、コンパイルコマンド(cl.exe)をコマンドラインから直接叩いてやればい > くらでも出来ますが、出来ればIDEから簡単な操作で行いたいのです。 コマンドラインで操作するのが簡単ではない理由は何ですか? もし、大量のオプションを指定しなければならないことが理由であれば、バッチファイルでも作っておけば解決します。 (バッチファイルのアイコンに、ソースファイルをドラッグ&ドロップするだけになります)

katorea21
質問者

お礼

ご回答ありがとうございます。 確かにその通りですがね。出来ればVSの中だけで出来る方法を見つけたかったのです。バッチで構わないというならここで聞くまでもありません。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>そのため、プロジェクトをビルドするのに30分以上もかかり、開発効率が非常に悪 くなっています。 「ビルド」と書かれていますが、これは「リビルド」の事なんでしょうか。 >リビルド時間を短縮するためソース間の依存関係を減らして・・・ > >というような、質問の内容を超える回答はご遠慮ください。 >そのようなことは、十分ではないかも知れませんが検討済みです。 と書かれている事からそんな気がするのですけど。 というか、ソース間の依存関係って*.cpp同士に依存関係があるという事なんでしょうか。

katorea21
質問者

お礼

ご回答ありがとうございます。 ビルドでもリビルドでもかなりの時間がかかるのです。作りが悪いことは分かっているのですが、今更どうしようもないのですよ。

回答No.2

僕ならプロジェクトをふたつ作る。 # もちろんソースコードは共有して

katorea21
質問者

お礼

ご回答ありがとうございます。 そういう事が可能なら苦労はしないのですが。 なるべく今のままの構成を保ちたいのです。

回答No.1

ソースファイルを纏めた結果、その「まとまった」ソースに対する「1つの」オブジェクトが生成されるようになってしまっている筈です。 この場合、その一部を書き換えた上でビルドするには、当然その「1つの」オブジェクトを生成するために、「一纏まりの」ソースをコンパイルする必要があります(リンカの動作はご存知でしょうか)。 その為、(ビルドから除外した)特定のソースファイルを単独でコンパイルする、という柔軟性を必然的に失ってしまっていることでしょう。 私ならそのような方法の代わりに、(mingwの)GNU Makeでビルドしたいです。依存関係を自動的に洗ってくれる、ファイルの更新日時を見て必要最小限のコンパイルで済ましてくれる、可能な限り多重のプロセスを用いて並列に実行させることが出来る(-jオプション)といった優れた結果が得られるので。

katorea21
質問者

お礼

ご回答ありがとうございます。 Visual Studio以外のツールは想定していません。