не могу понять, как это обойти. CMakeLists минимального примера: https://pastebin.com/W58xsz9V main.cpp: https://pastebin.com/qZuYKu6N (обычный хелло ворлд)
Что мне нужно: msvc линковщику можно передать флаг /pdbaltpath:%_PDB%, чтобы к краш дампу исполняемого файла можно было бы подключить символы, и чтобы абсолютный путь к пдб файлу не присутствовал в самом исполняемом файле.
В CMakeLists указывается target_link_options(pdbtest PRIVATE "$<$<CONFIG:Release>:/pdbaltpath:%_PDB%>"), чтобы этот флаг выставлялся только в релизе.
Однако, после генерации проекта, настоящий флаг, который передаётся студией -- /pdbaltpath:%%%%_PDB%%%%. Линкер берёт середину, заменяет на название файла, и в ехе оказывается %%%pdbtest.pdb%%%. Разумеется студия не может найти такой файл и отключает возможность дебажить релиз...
Что это за странное поведение? Его можно как-то обойти?
релевантный комментарий https://gitlab.kitware.com/cmake/cmake/-/issues/14694#note_133434
Смотри, вот тут рекомендуют применить XML escape к символу процента. Правда, сам escape в письме не пропечатался, но я думаю, его несложно нагуглить.
Обсуждают сегодня