Visual Studio игнорирует флаги компоновщика CMake для оптимизации профиля - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть проект C++, который использует CMake в качестве системы сборки в Visual Studio 2017 Enterprise.Согласно документации , я должен связать, используя /LTCG и /GENPROFILECMake это похоже на установку переменной 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 впоследствии не привело к созданию другого двоичного файла.Кроме того, время выполнения примерно эквивалентно.В командной строке также нет указания на то, что профиль был создан или использован.

Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...