У меня есть проект C++
, который использует CMake
в качестве системы сборки в Visual Studio 2017 Enterprise
.Согласно документации , я должен связать, используя /LTCG
и /GENPROFILE
.В CMake
это похоже на установку переменной CMAKE_EXE_LINKER_FLAGS
:
set(LINKER_FLAGS, "/LTCG /GENPROFILE")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
Более того, поскольку моему приложению требуются аргументы командной строки, я должен был определить их в launch.vs.json
, как показано в этом answer .
Теперь, если я запускаю профиль приложения x64-Release
, он успешно завершается в обычном режиме без задержки Release
сборки..pgd
не было сгенерировано, что означает, что мои переданные флаги компоновщика, вероятно, были проигнорированы.
Другой попыткой было добавление дополнительных CMake
переменных флага компоновщика:
set(LINKER_FLAGS, "/LTCG /USEPROFILE")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LINKER_FLAGS}")
Это также не помоглот работа.Задание /USEPROFILE
впоследствии не привело к созданию другого двоичного файла.Кроме того, время выполнения примерно эквивалентно.В командной строке также нет указания на то, что профиль был создан или использован.
Что я здесь не так делаю?