Visual Studio игнорирует флаги компоновщика CMake для оптимизации профиля
У меня есть 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
как видно из этого ответа.
Теперь, если я запускаю приложение 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
впоследствии не генерировать другой двоичный файл. Кроме того, время выполнения примерно эквивалентно. В командной строке также нет указания на то, что профиль был создан или использован.
Что я здесь не так делаю?