прицепить пост билд эвент, кросс платформенно, немного разные эвенты под разные типы сборок: 
                  
                  
                   
                  
                  
                  if (CMAKE_CONFIGURATION_TYPES)
                  
                  
                      set(conf_types ${CMAKE_CONFIGURATION_TYPES})
                  
                  
                  else()
                  
                  
                      set(conf_types ${CMAKE_BUILD_TYPE})
                  
                  
                  endif()
                  
                  
                  
                  
                  
                  foreach(conf IN LISTS conf_types)
                  
                  
                      add_custom_command(
                  
                  
                          TARGET mytarget 
                  
                  
                          POST_BUILD 
                  
                  
                          COMMAND "$<$<CONFIG:${conf}>:echo $<TARGET_FILE:mytarget>>"
                  
                  
                          COMMENT "My process target \"mytarget\""
                  
                  
                          VERBATIM 
                  
                  
                      )
                  
                  
                  endforeach()
                  
                  
                  
                  
                  
                  Однако в студии получаю такое: 
                  
                  
                   
                  
                  
                  "echo J:\myprj\build-vc15-x64\Release\bin\mytarget.dll"
                  
                  
                  
                  
                  
                  То есть команда в кавычках, из-за этого команда не выполняется.
                  
                  
                  Окей, пробую убрать кавычки в самой команде: 
                  
                  
                   
                  
                  
                  COMMAND $<$<CONFIG:${conf}>:echo $<TARGET_FILE:mytarget>>
                  
                  
                  
                  
                  
                  На выходе получаю вообще тихий ужас: 
                  
                  
                   
                  
                  
                  ""$"<1:echo" "J:/myprj/build-vc15-x64/Release/bin/mytarget.dll>"
                  
                  
                  
                  
                  
                  Пробую убрать VERBATIM, на выходе примерно то же самое, что и выше, но кавычки опять изменились: 
                  
                  
                   
                  
                  
                  ""$"<1:echo" J:/myprj/build-vc15-x64/Release/bin/mytarget.dll>
                  
                  
                  
                  
                  
                  
                  
                  
                  CMake 3.18.2, но целевой - 3.7.2
                  
                  
                  MS VS 16.4.3 
                  
                  
                  Под линуксами (make в качестве генератора) первый вариант работает изумительно. 
                  
                  
                  
                  
                  
                  Куда копать?
                  
                  
                
Время обеда, поэтому позвольте я снова подниму этот вопрос.
Нет... Попробую...
Увы, результат такой же...
Как выглядит код сейчас? Кавычки в COMMAND оставлены?
Всё перепробовал. Везде добавлял, везде убирал, где-то оставлял, где-то убирал. Пробовал вообще весь текст команды, включая определение CONFIG в отдельную переменную вытаскивать, так же плясать с кавычками - всё без толку...
Просто echo $<TARGET_FILE:mytarget> работает?
Да, так всё отлично. При отсутствии кавычек.
Обсуждают сегодня