2017-03-09 135 views
0

我想編寫一個cmake腳本來查找directx 12 sdk的目錄。該目錄位於$ENV{ProgramFiles}/Windows Kits/10/Include/。但是,在這條路上,它有許多不同版本的SDK,它存儲在不同的目錄中。如10.0.10150,10.0.10240,10.0.10586等。如何獲取cmake路徑上的所有目錄名稱?

我不知道有多少版本的SDK。所以我想要獲得這個路徑上的所有目錄。但我應該怎麼做? 這樣的目錄:

  • $ ENV {} PROGRAMFILES/Windows的套件/ 10 /包含/
    • 10.0.10150
    • 10.0.10240
    • 10.0.10586

謝謝。

+2

[CMake:如何獲取目錄中所有子目錄的名稱?](http://stackoverflow.com/questions/7787823/cmake-how-to-get-the-name-of-all目錄的子目錄) – Tsyvarev

+2

哪個版本的CMake和您使用的是哪個版本的Visual Studio?因爲對於Visual Studio 2015及更高版本,SDK版本位於['CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION'](https://cmake.org/cmake/help/v3.4/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html)全局變量中。 – Florian

回答

0

談到我的意見爲答案

根據"Where is the DirectX SDK (2015 Edition)?"它現在是在Windows 10 SDK(已添加的路徑表明您已經安裝)的一部分。

如果我們只談論SDK中的頭文件,那麼您就不需要任何東西。只需包含它們,Visual Studio就會找到正確的SDK標頭(與您的項目設置相匹配)。

要回答你的問題,我看到了以下可能性(與我的VS2015社區版測試):

file(TO_CMAKE_PATH "$ENV{ProgramFiles}" _progFilePath) 
message("${_progFilePath}/Windows Kits/10/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") 

輸出我的機器

上:

  1. 使用CMake的變量CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION

    C:/Program Files/Windows Kits/10/Include/10.0.14393.0 
    
  2. 讓CMake的做調查的DirectX頭與find_file()的工作:

    find_file(_directXHeader "d3d9.h") 
    get_filename_component(_directXPath "${_directXHeader}" DIRECTORY) 
    message("${_directXPath}") 
    

    輸出我的機器上

    C:/Program Files (x86)/Windows Kits/10/Include/10.0.14393.0/shared 
    
  3. 直接使用Visual Studio宏象

    add_compile_options("/I%(WindowsSDK_IncludePath)") 
    
+0

謝謝!它正在正常工作! – LeLe570929726