【问题标题】:How to get all directory name on a path in cmake?如何在cmake中获取路径上的所有目录名称?
【发布时间】:2017-03-09 07:19:02
【问题描述】:

我想写一个cmake脚本来找到directx 12 sdk的目录。该目录位于$ENV{ProgramFiles}/Windows Kits/10/Include/。但是,在这条路径上,它有许多不同版本的 SDK,它们存储在不同的目录中。如10.0.10150、10.0.10240、10.0.10586等。

我不知道SDK有多少个版本。所以我想获取这条路径上的所有目录。但是我该怎么办? 目录如下:

  • $ENV{ProgramFiles}/Windows Kits/10/Include/
    • 10.0.10150
    • 10.0.10240
    • 10.0.10586

谢谢。

【问题讨论】:

标签: cmake directx-12


【解决方案1】:

把我的评论变成答案

根据"Where is the DirectX SDK (2015 Edition)?",它现在是 Windows 10 SDK 的一部分(您添加的路径表明您已经安装了它)。

如果我们只讨论 SDK 中的标头,那么您不需要任何内容​​。只需包含它们,Visual Studio 就会找到正确的 SDK 标头(与您的项目设置匹配)。

为了回答您的问题,我看到以下可能性(用我的 VS2015 社区版测试):

  1. 使用 CMake 变量 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION:

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

    我机器上的输出

    C:/Program Files/Windows Kits/10/Include/10.0.14393.0
    
  2. 让 CMake 使用find_file() 来查找 DirectX 标头:

    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)")
    

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2022-11-11
    • 2012-12-03
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多