問題タブ [incremental-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
11061 参照

visual-studio-2010 - ファイルトラッカーログファイル形式

Visual Studio 2010では、インクリメンタルビルドはファイルトラッカー(Microsoft.Build.Utilities.FileTracker)を使用して実行されます。中間ディレクトリにこれらの*.1.tlogファイルを作成する責任があるようです。

これらの.tlogファイルの構文への参照が見つかりませんでした。
これらには、インクリメンタルビルドでコンパイルする必要があるファイルを確認するために、トラッカーがツールの実行を追跡している間に読み取り/書き込みされるファイルへのパスのリストが含まれています。ただし、これらのファイルには、「^」や「|」などの特殊文字も含まれています。
私が気付いたもう1つのことは、これらのファイルがVisualStudioのターゲットファイルから編集されることがあるということです。たとえば、CustomBuildStepターゲットのMicrosoft.CppCommon.targetsで、次の行が見つかりました。

したがって、これはおそらく、プロジェクトファイルがカスタムビルドステップの出力に依存していることを意味します。

私の質問は次のとおりです。

  • .tlogファイル構文のリファレンスを知っている人はいますか?
  • Visual Studioでトラッカーログが使用されるのはどの場合ですか?CLと、それを使用するLinkタスクについては知っていますが、Visual Studio IDE自体が、特定のプロジェクトに対してmsbuildを実行するかどうかを決定するためにCLを使用しているようです。

ありがとう


編集

別のヒント:

CanonicalTrackedInputFiles Classは、「標準形式の.read。追跡ログまたは正規化するためにルート化された(^)ログのファイル追跡ログインタープリター」として文書化され
ています。時間があれば、もう少し掘り下げます。おそらく、このクラスとMicrosoft.Build.Utilitiesの下の他のクラスを使用して、生のテキストのtlogファイルを直接操作する代わりに、tlogファイルを操作するのに役立てることができます。

も参照してください:CanonicalTrackedOutputFiles ClassFlatTrackingData ClassそしてもちろんFileTracker Class

0 投票する
1 に答える
592 参照

eclipse-plugin - Eclipse を使用して DSL を構築するときのインクリメンタル コンパイルへの最良のアプローチは何ですか?

Eclipse のドキュメントで示唆されているように、org.eclipse.core.resources.IncrementalProjectBuilder各ソース ファイルをコンパイルする があり、個別にorg.eclipse.ui.editors.text.TextEditor各ソース ファイルを編集できる もあります。各ソース ファイルは独自のコンパイル ユニットにコンパイルされますが、他の (既にコンパイルされた) ソース ファイルから型を参照できます。

これが重要な 2 つのタスクは次のとおりです。

  1. コンパイル (使用している型が実際に存在することを確認するため)
  2. オートコンプリート (タイプを調べて、そこに存在するプロパティ/メソッドを確認できるようにするため)

これを実現するために、コンパイルされたすべての型の表現をメモリに格納します (以下、「型ストア」と呼びます)。

私の質問は 2 つあります。

  1. 上記のタスク 1 はビルダーによって実行され、タスク 2 はエディターによって実行されます。両方がこの型ストアにアクセスできるようにするには、両方がアクセスできる静的ストアをどこかに作成する必要がありますか、または Eclipse はこの問題に対処するためのより適切な方法を提供しますか? 必要なときにビルダーとエディターをインスタンス化するのは、私ではなくEclipseであることに注意してください。

  2. Eclipse を開くときに、タイプ ストアを再作成できるようにするためだけに、プロジェクト全体を再構築する必要はありません。これまでの私の最善の解決策は、このデータをどこかに保持し、そこからストアを再作成することです (おそらくプロジェクトを開いたときに)。これは、他のインクリメンタル コンパイラが通常行う方法ですか? Java のアプローチは、クラス ファイルからこのデータを効率的に抽出する特別なパーサーを使用することだと思います。

どんな洞察も本当に高く評価されます。これは私の最初の DSL です。

0 投票する
2 に答える
6238 参照

java - Mavenインクリメンタルビルディング

現在、ビルド用のいくつかの一般的な親POMを除いて、複雑な依存関係を持つ多くの単一のスタンドアロンプ​​ロジェクトのコレクションである大きなMaven2プロジェクトがあります。結局、アプリケーションは常に1つのピースとして出荷する必要があるため、1つまたはいくつかの大きなプロジェクトに変換したいと思います。

大規模なプロジェクトの継続的インテグレーションビルドを最適化する方法の経験はありますか?MavenまたはHudsonのインクリメンタルビルド機能は良いですか?1つのモジュールに小さな変更を加えただけの場合は、常に2時間待たないようにします。

一方、確かに、変更されたモジュールの少なくともすべての直接および間接の依存関係を再構築して再テストする必要があります。これは、現在ハドソンで行っていることでもあり、すべての依存ジョブを自動的にトリガーします。

同じプロジェクトの複数のビルドジョブに分割することで成果が得られますか?私は通常、レポートやドキュメントなど、他のすべての生成されたものが古くなっている可能性があるサーバー上にアーティファクトを置くのは好きではありません。

考えてくれてありがとう。

0 投票する
3 に答える
456 参照

c++ - C++ヘッダー-実装-ヘッダー-実装依存関係チェーン

依存関係リゾルバーを使用して、単純なC++インクリメンタルビルドツールを作成しようとしています。私はcppビルドプロセスに関する1つの問題について混乱しています。ライブラリがいくつかのファイルで構成されていると想像してください。

h1.hを含むクライアントコードの場合

s2.cpp実装には暗黙の依存関係があります:our_src-> h3-> s1->h2->s2。したがって、2つのobjファイルとリンクする必要があります。

対照的に、h3.hが含まれている場合

ソースの依存関係は1つだけです:our_src-> h3-> s2

したがって、h3.hをインクルードする場合、コンパイルする必要があるのはs2.cppのみです(s1.cpp-> h2.hをインクルードしているにもかかわらず)。

これは問題の非常に単純な例です。実際のプロジェクトでは、確かに数百のファイルがあり、非効率的なインクルードのチェーンにはさらに多くのファイルが含まれている可能性があります。

だから私の質問は:依存関係をチェックするときに(CPP解析なしで)どのヘッダーインクルージョンを省略できるかを見つける方法や手段はありますか?

ご回答いただければ幸いです。

0 投票する
1 に答える
959 参照

c++ - フルビルドの場合とパーシャルビルドの場合

こんにちは私は完全なビルドが必要なときと部分的なビルドで十分なときを見つけようとしています。アーティカルはたくさんありますが、具体的な答えが見つかりません。

以下は私の考えです

フルビルドが必要な場合:

1.依存モジュールのビルドの変更。

---ビルドオプションの変更または最適化手法の使用。

2.オブジェクトレイアウトの変更:

---ヘッダーファイルの変更、クラス内の新しいメソッドの追加と削除。

---変数または仮想関数を追加または削除してオブジェクトサイズを変更します。

---プラグマパックを使用したデータアライメントの変更。

3.グローバル変数の変更

次の場合は、部分ビルドで十分です。

1.指定されたインターフェイスを変更しない限り、ロジックの変更

2.スタック変数の変更

0 投票する
2 に答える
422 参照

compilation - Agdaはバッチモードでより速くコンパイルできますか?

標準ライブラリを使用するAgdaプログラムをコンパイルすると、コンパイラは次のような行を出力するのに長い時間を費やします。

それらを安全に「スキップ」する理由は、それらがすでにコンパイルされているためだと思います(ディレクトリにはすでに.agdaiファイルがあります)。しかし、それでもそれらをスキップするのに多くの時間を費やし、コンパイルには1分以上かかります。

すべてのコンパイルでこの余分な作業をすべて回避する方法はありますか?

0 投票する
1 に答える
1200 参照

eclipse - Eclipse の Maven: インクリメンタル ビルド

私はしばらく探し回っていましたが、Eclipse で段階的に Maven をビルドする明確な方法が見つかりません。

現在、Maven は、変更を加えるたびに .war ファイルを生成します。これは、通常のビルド プロセス中にコンパイルするのに時間がかかります。

物事をスピードアップし、代わりに差分変更をディレクトリにコピーする最も簡単な方法は何ですか?


私の pom.xml ファイル:

0 投票する
1 に答える
11951 参照

maven - Jenkinsでのインクリメンタルビルド

私はJenkins1.462を使用しており、Mavenのバージョンは3.0.4です。Jenkinsで、チェックボックス「インクリメンタルビルド-変更されたモジュールのみをビルドする」を有効にしました

私は2つの質問を理解したい:

  1. インクリメンタルビルドで十分かどうか? ここで、SubversionからのマルチモジュールMavenビルドで単一モジュールのJenkinsビルドをトリガーするにはどうすればよいですか?たとえば、100%では機能しないと述べられています。19ページのhttp://www.slideshare.net/andrewbayer/7-habits-of-highly-effective-jenkins-usersは、インクリメンタルビルドが補完的であると述べています。完全なビルドであり、置き換えではありません。

  2. インクリメンタルビルド-変更されたモジュールのビルドのみが実際に期待どおりに機能するかどうか。 これはどういう意味ですか?モジュールA、B、X、C、Dがある場合、XはAとBを使用し、CはXを使用し、DはCを使用し、Xモジュールを変更します。モジュールX(itslef)、C(Xを直接使用する)およびD(推移閉包にある; DはCを使用し、Cを使用する)を再コンパイルしたい。

注:これは、インクリメンタルビルドを有効にするために行った唯一の変更です。

0 投票する
1 に答える
368 参照

msbuild - MSBuild インクリメンタル ビルド エラー

.NET ソリューションの出力を構築して展開フォルダーにコピーする際に、1 つの問題に直面しています。

私がやりたいことは。ソリューションをビルドし、出力を C:\TempOutput に配置します

次に、出力ファイルを C:\TempOutput から別の展開フォルダーにコピーします。

最初の試行で、C:\TempOutput にフォルダーが作成され、このフォルダーに出力 dll と exe が作成されます

また、「Exec\Debug\Bin」フォルダーを作成しますが、C:\TempOutput からファイルをコピーしません。

ログは言う

ターゲット CopyBuildFiles: 出力がないため、ターゲット "CopyBuildFiles" をスキップしています。

今回スクリプトを再度実行すると、ファイルが C:\TempOutput から "Exec\Debug\Bin" にコピーされます

何か不足していますか?最初の試行で出力が検出されないのはなぜですか?

以下はmsbuildスクリプトです

0 投票する
1 に答える
239 参照

asp.net-mvc - TFS および MVC プロジェクトのベスト プラクティス - 変更のみの展開

会社で管理している Web サイトがいくつかあり、TFS への移行を求められています。彼らのポリシーの一環として、前回の展開以降に変更されたファイルのみを展開できます。つまり、ビューが変更された場合はデプロイされ、変更されていない場合はデプロイ パッケージの一部ではありません。デプロイには自動化されたツールを使用します。

現在、ローカルのソース プロバイダー (Vault Pro) に接続して、特定の日付からのすべての変更を検索し、それらのファイルを zip ファイルにコピーするカスタム ツールを使用しています。

Team Foundation Server で同様のことを行うにはどうすればよいですか?