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

プロジェクトのビルドにWindows10 SDKを使う #1044

Merged
merged 3 commits into from
Sep 17, 2019

Conversation

berryzplus
Copy link
Contributor

PR の目的

プロジェクトのビルドにWindows SDKを使うようにして、
Windows SDKがC++規格に準拠してない旨のビルド時警告が出ないようにします。

カテゴリ

  • 仕様変更

PR の背景

歴史的な理由で、昔のWindows SDKはC++規格に準拠していません。

ごく最近Microsoftが方針を変える前まで、
「Windows APIプログラムでは警告は無視してよいもの」でした。

MSVCのコンパイラに /permissive が追加されたことにより、状況が変わりました。
Windows SDK内の警告は、新しいWindows 10 SDK を使うことで解消できます。

/permissive-

The /permissive- option is compatible with almost all of the header files from the latest Windows Kits,
such as the Software Development Kit (SDK) or Windows Driver Kit (WDK), starting in the Windows Fall Creators SDK (10.0.16299.0).
Older versions of the SDK may fail to compile under /permissive- for various source code conformance reasons.

ビルド番号 バージョン 通称 vs2017 vs2019
10.0.16299 1709 Fall Creators Update
10.0.17134 1803 April 2018 Update
10.0.17763 1809 October 2018 Update
10.0.18362 1903 May 2019 Update ×
凡例:◎標準、○インストールできる、×インストールできない

現状は、プログラムにビルドに使うWindows SDKのバージョンを指定していません。
指定しなかった場合に使われるWindows SDKのバージョンは8.1になります。

このPRでは、プロジェクトのビルドに使う Windows SDK のバージョンを、
現状の標準インストールバージョンに固定します。

PR のメリット

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

  • 対処方法が testsプロジェクトのビルドを速くする Take2 #1039 で tests1 の不具合が修正されることに依存します。
  • vs2017でビルドするには Windows SDK 10.0.17763 のインストールが必須になります。
    • vs2017でインストールできるWindows SDKの最終バージョンなので問題ないと思います。
  • vs2019でビルドするには Windows SDK 10.0.18362 のインストールが必須になります。
    • Windows 10 SDKは半期に1度出荷されるため、やや問題ありだと思います。
      • 2019年下期リリースが出荷されれば、直ちに問題がでるはずです。
      • 問題が出た時に対処すればよい話だと思います。
  • Windows SDK 8.1 のインストールが不要になりますが、このPRではドキュメントを更新しません。

PR の影響範囲

  • 開発環境の使い勝手に影響します。
  • ビルドに必要なSDKの選択に影響します。
  • アプリ(=サクラエディタ)の機能に影響はありません。

関連チケット

close #1043 Windows SDKのヘッダで警告が出ている件に対応したい
#1039 testsプロジェクトのビルドを速くする Take2
#1013 tests1 プロジェクトをリビルドしたりクリーンすると異なる構成のビルドに影響してしまう
#872 開発環境(Visual Studio)の機能をもっと活用するためにコード改善を行いたい

参考資料

あなたが使っているWindows 10のバージョン、本当にご存じですか?
Microsoft公式のバージョン情報
https://en.wikipedia.org/wiki/Windows_10_version_history

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

その他
BuildDirの末尾に\が付いていたのを削除。
vcxcompat.propsを正しく読み込めていなかったのを修正。
複数パスにgitがある場合、最初に見つかったものを使用する。
@AppVeyorBot
Copy link

Copy link
Contributor

@beru beru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows SDK って結構サイズが大きくてDLに時間が掛かるので特定のバージョンが入ってないとビルド出来ないようにしてしまうのはちょっと気になります。

まぁ絶対に反対というわけではないです。環境毎に一度用意すれば済む話なので。

@beru
Copy link
Contributor

beru commented Sep 16, 2019

特定の1つのバージョンを指定しなきゃいけない仕様なので、17763 で問題無いかもしれないですね…。Visual Studio は新しいバージョンを入れる案内がうるさいし、きっとみんな Update を当てるだろうと思います。
https://stackoverflow.com/questions/54134339/how-do-i-specify-any-windows-sdk-version-greater-than-10-0-in-a-visual-studio

Copy link
Contributor

@beru beru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

問題無いと思います。

@berryzplus
Copy link
Contributor Author

レビューありがとうございます。

このPRはDraftで、#1039 のPR内容を含んでいます。
単にDraft解除したらマージできるのかも知れないですが、
その対応は信義則的にどうなんだ?と思うので一旦止まります。

@berryzplus berryzplus marked this pull request as ready for review September 17, 2019 23:13
@berryzplus berryzplus merged commit 8b1f784 into sakura-editor:master Sep 17, 2019
@berryzplus berryzplus deleted the feature/use_windows10_sdk branch September 17, 2019 23:15
@berryzplus
Copy link
Contributor Author

Draft解除してマージしました。
何か問題あったら別PRで対処します。

@m-tmatma m-tmatma added this to the v2.4.0 milestone Dec 29, 2019
@KENCHjp KENCHjp added the specification change ■仕様変更 label Jan 7, 2020
HoppingTappy pushed a commit to HoppingTappy/sakura that referenced this pull request Jun 16, 2020
…dows10_sdk

プロジェクトのビルドにWindows10 SDKを使う
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
specification change ■仕様変更
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Windows SDKのヘッダで警告が出ている件に対応したい
5 participants