Как получить все имя каталога по пути в cmake?
Я хочу написать скрипт 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 / Включить /
- 10.0.10150
- 10.0.10240
- 10.0.10586
Благодарю.
1 ответ
Превращаю мой комментарий в ответ
Согласно "Где находится DirectX SDK (2015 Edition)?" теперь он является частью Windows 10 SDK (пути, которые вы добавили, указывают, что вы уже установили его).
Если мы говорим только о заголовках в SDK, с вашей стороны ничего не требуется. Просто включите их, и Visual Studio найдет правильные заголовки SDK (соответствующие настройкам вашего проекта).
Чтобы ответить на ваш вопрос, я вижу следующие возможности (протестировано с моим VS2015 Community Edition):
Использование переменной 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
Пусть 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
Непосредственно используйте макросы Visual Studio, такие как
add_compile_options("/I%(WindowsSDK_IncludePath)")