日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

修复被破坏的 vs 工程设置(续)

發布時間:2023/12/4 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修复被破坏的 vs 工程设置(续) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緣起

在上一篇文章——《修復被破壞的 vs 工程設置》中,我分享了修復被破壞的 vs 工程設置的實戰。本以為圓滿解決了問題,沒想到另有玄機。所以又來分享一篇刨根問底的文章。

查看文件

打開 Microsoft.Cpp.Win32.user.props 一看,里面并沒有任何有用的內容!如下圖:

看來,默認的 包含目錄 和 庫目錄 的值不是從這里來的!雖然可以在這里添加自定義的值。對比看一下 vs 工程設置中的 包含目錄 和 庫目錄 的值,如下圖:

顯然,包含目錄 和 庫目錄 的值不為空。接下來的任務是調查到這兩個值是從哪里來的(只看包含目錄的值就可以了,庫目錄的值可以用類似的方法查)。應該根據什么線索來調查呢?

還是搜索

包含目錄的值應該保存在某個地方(配置文件或者注冊表),不能憑空出來這么一個東東。還是優先在本地硬盤搜索,繼續使用 File Locator,搜索 WindowsSDK_IncludePath。

有很多條記錄。因為我使用的是 vs2013,對應的版本是 v120,從搜索結果中的文件路徑可以猜測,ARM 是編譯 ARM 平臺程序用的,Win32 是編譯 32 位程序用的,x64 是編譯 64 位程序用的。所以,我嚴重懷疑上圖中高亮的這條記錄。修改這個文件的內容(需要管理員權限),如下圖:

在 vs 中驗證一下,打開之前的工程,查看對應的工程屬性,如下圖:

果然已經變成了修改后的值,說明猜對了!至此,我們已經知道包含目錄的值是從 Toolset.props 中獲取的,是由 $(VC_IncludePath) 和 $(WindowsSDK_IncludePath) 組成的,那這兩個宏的值是從哪里來的呢?我以追查 WindowsSDK_IncludePath 的值為例展開。

WindowsSDK_IncludePath

繼續使用 File Locator 繼續搜索,搜索結果如下圖:

看了一圈,只有 C:\Program Files (x86)\Windows Kits\8.1\DesignTime\CommonConfiguration\Neutral\Windows.props 文件比較可能是定義 WindowsSDK_IncludePath 的地方。其它幾個文件都是在使用。

修改 Windows.props 中的 WindowsSDK_IncludePath 為空(需要管理員權限),如下圖:

再次使用 vs 打開工程文件,查看包含路徑的值,果然是我們修改后的值。

More

如果你足夠細心,會發現在確定 IncludePath 的值的時候,只有當 IncludePath 是空的時候,才會使用配置文件中對應的值。我把 Toolset.props 中的關鍵語句粘貼如下(可以左右拖動查看):

<IncludePath?Condition="'$(IncludePath)'?==?''">$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>

Condition="'$(IncludePath)' == ''" 表示:當 $(IncludePath) 的值是空才取后面的值。如果 IncludePath 不為空,就不會取后面的值了。

IncludePath 可能會在哪里被賦值呢?我們可以自己設置 IncludePath 的值嗎?答案是肯定的。

如果有一個名為IncludePath 的環境變量,結果會是什么樣的呢?請看下面的視頻:

看來,確實可以通過環境變量來設置 vs 中的宏。

總結

  • .props 文件中可以設置一些預定義的值,在 .vcxproj 文件中 import 對應的 .props 文件即可使用。

  • 我們可以通過環境變量的值設置 vs 中使用的宏的值。

  • 搜索文件內容,請用 File Locator。

參考資料

《Inside the Microsoft Build Engine —— Using MSBuild and Team Foundation Build》

歡迎留言交流!

感謝你的分享,點贊和在看

總結

以上是生活随笔為你收集整理的修复被破坏的 vs 工程设置(续)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。