Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testsプロジェクトのビルドを速くする Take2 #1039

Conversation

berryzplus
Copy link
Contributor

@berryzplus berryzplus commented Sep 15, 2019

PR の目的

テストプロジェクトのビルドステップの実行条件を見直すことにより、テストプロジェクトのビルドを速くします。また、プロジェクト設定に存在していた潜在的な不具合を取り除きます。

カテゴリ

  • 不具合修正
  • 速度向上

PR の背景

#1013 のコメントで書いていた、tests1 プロジェクトの改善です。
(そして #1033 の焼き直しです。)

やってること

  1. find-tools.batを呼ばないようにする。(高速化)
  2. googletestのcmakeコンフィグを毎回呼ばないようにする。(高速化)
  3. googletest.targetsでBuildDirの末尾に\が付いていたのを削除。(不具合修正)
  4. vcxcompat.propsを正しく読み込めていなかったのを修正。(不具合修正)

主に「2回目以降のビルド」に対して効果を発揮する改善です。
find-tools.batの絡みで「リビルド」も少しだけ速くなります。

追加の解説

  • find-tools呼出削除について
    • find-toolsを呼んでたのは、gitコマンドのパスを取得するためでした。
      • 時間がかかっているのは、主に他ツールの捜索です。
        • 対策としてgitコマンドのパスを取得だけを抜き出してtargetsに実装しました。
  • cmakeコンフィグを毎回呼ばない、について
    • cmakeを2回呼んでいるのは、1回目がコンフィグで、2回目がビルドだからです。
    • もし3回目の実行をビルドモードで行い、再コンフィグが必要だった場合、cmakeが変更を検出してくれます。
    • 再コンフィグは結構重たい処理なので、不要な場合はスキップしたいです。
    • 1度コンフィグが完了すると、必ず生成されるキャッシュファイルがあるので、それを使ってコンフィグが必要かどうか判断するように実装しました。
  • BuildDirの末尾に\について
    • 単なるミスです。成果物のパスが \\lib のような感じになっていました。
  • vcxcompat.propsを正しく読み込めていなかった、について
    • Import Projectの書き順が誤っていました。
      • PlatformToolset 141 が有効になっていたため、vs2019単体インストールのマシンでビルドが通らなかったようです。
      • WindowsTargetPlatformVersionに記載されたバージョンが、vs2019標準では入らないバージョンになってたので削りました。

PR のメリット

  • tests1プロジェクトの2回目以降のビルドが速くなります。
    • GoogleTest の cmake コンフィグ が毎回は走らなくなります。
  • tests1プロジェクトの git clone 後2回目以降のリビルドが速くなります。
    • GoogleTest の git submodule init が毎回は走らなくなります。
    • GoogleTest の git submodule update が毎回は走らなくなります。
  • GoogleTest のリポジトリ更新を行うための tools/find-tools.bat が毎回は呼ばれなくなります。
  • tests1プロジェクト設定の不具合が解消されます。

PR のデメリット (トレードオフとかあれば)

とくにありません。
#1033 に記載した既知の不具合は解消しました。)

PR の影響範囲

  • ローカル開発環境の使い勝手に影響します。
  • アプリ(=サクラエディタ)の機能に影響はありません。

関連チケット

#1033 [WIP] testsプロジェクトのビルドを速くする
#1013 tests1 プロジェクトをリビルドしたりクリーンすると異なる構成のビルドに影響してしまう
#872 開発環境(Visual Studio)の機能をもっと活用するためにコード改善を行いたい

参考資料

1. find-tools.batを呼ばないようにする
2. googletestのcmakeコンフィグを毎回呼ばないようにする

その他
BuildDirの末尾に\が付いていたのを削除。
vcxcompat.propsを正しく読み込めていなかったのを修正。
@AppVeyorBot
Copy link

@berryzplus
Copy link
Contributor Author

なぜか x64 だけエラー

(UpdateGoogleTest target) ->
D:\a\1\s\tests\googletest.targets(28,5): error MSB3073: The command ""C:\agents\2.155.1\externals\git\cmd\git.exe;C:\Program Files\Git\bin\git.exe;C:\Program Files\Git\mingw64\bin\git.exe;C:\Program Files\Git\cmd\git.exe" submodule init" exited with code 123. [D:\a\1\s\tests\unittests\tests1.vcxproj]

whereコマンドの出力がおかしな形で取り込まれている感じ・・・。

複数パスにgitがある場合、最初に見つかったものを使用する。
@AppVeyorBot
Copy link

@berryzplus
Copy link
Contributor Author

#1044 に包含されるので閉じます。

@berryzplus berryzplus closed this Sep 17, 2019
@berryzplus berryzplus deleted the feature/accelerate_tests_build_take2 branch September 17, 2019 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants