Как использовать макросы Visual Studio в качестве аргумента в CMakeLists target_include_directories? - PullRequest
0 голосов
/ 30 мая 2020

Итак, образец CMakeLists.txt, демонстрирующий эту проблему:

cmake_minimum_required( VERSION 2.8 )
project(CMakeVSMacroIssue)
if(NOT WIN32)
    message(FATAL_ERROR "It's not possible to demonstrate this issue in ${CMAKE_SYSTEM_NAME}")
endif()

if(NOT MSVC)
    message(FATAL_ERROR, "Please, use Visual Studio")
endif()

file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Foo.cpp "int main(){return 0;}")
add_executable(Foo ${CMAKE_CURRENT_BINARY_DIR}/Foo.cpp)
target_include_directories(Foo PRIVATE $(VCIDEInstallDir))

В Foo.vcxproj я ожидал увидеть что-то вроде этого: <AdditionalIncludeDirectories>$(VCIDEInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

Но получил: <AdditionalIncludeDirectories>D:\Stuff\CMakeVSMacroProblem\$(VCIDEInstallDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - который заменяется на недопустимый путь D:\Stuff\CMakeVSMacroProblem\C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\

Как это исправить?

...