Итак, образец 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\
Как это исправить?