Выражения генератора, помещенные в несколько строк, интерпретируются CMake иначе , чем помещая их все в одну строку (связанный вопрос здесь ). В этом случае для set_property()
CMake интерпретирует выражение многострочного генератора как список . Следовательно, для конфигурации Debug2018
одна запись списка оценивается как путь maya.exe
, а другие - как пустые строки. Все они помещены в список через точку с запятой.
Чтобы CMake не мог интерпретировать выражение как список, поместите выражение генератора whole в одну строку:
set_property(TARGET ${MAYA_PLUGIN_NAME} PROPERTY VS_DEBUGGER_COMMAND
$<$<CONFIG:Debug2017>:"C:/Program Files/Autodesk/Maya2017/bin/maya.exe">$<$<CONFIG:Release2017>:"C:/Program Files/Autodesk/Maya2017/bin/maya.exe">$<$<CONFIG:Debug2018>:"C:/Program Files/Autodesk/Maya2018/bin/maya.exe">$<$<CONFIG:Release2018>:"C:/Program Files/Autodesk/Maya2018/bin/maya.exe">$<$<CONFIG:Debug2019>:"C:/Program Files/Autodesk/Maya2019/bin/maya.exe">$<$<CONFIG:Release2019>:"C:/Program Files/Autodesk/Maya2019/bin/maya.exe">
)
Вы также можете использовать CMake string(CONCAT ...)
команда для создания выражения генератора в виде одной строки, а затем передача этой строки в команду set_property()
:
string(CONCAT MY_CONFIG_GENEX
"$<$<CONFIG:Debug2017>:\"C:/Program Files/Autodesk/Maya2017/bin/maya.exe\">"
"$<$<CONFIG:Release2017>:\"C:/Program Files/Autodesk/Maya2017/bin/maya.exe\">"
"$<$<CONFIG:Debug2018>:\"C:/Program Files/Autodesk/Maya2018/bin/maya.exe\">"
"$<$<CONFIG:Release2018>:\"C:/Program Files/Autodesk/Maya2018/bin/maya.exe\">"
"$<$<CONFIG:Debug2019>:\"C:/Program Files/Autodesk/Maya2019/bin/maya.exe\">"
"$<$<CONFIG:Release2019>:\"C:/Program Files/Autodesk/Maya2019/bin/maya.exe\">"
)
set_property(TARGET ${MAYA_PLUGIN_NAME} PROPERTY VS_DEBUGGER_COMMAND
${MY_CONFIG_GENEX}
)
В этом случае вы должны экранировать кавычки вокруг maya.exe
путь с обратной косой чертой (например, \"...\"
).