我有一个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
在 this 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
不会生成不同的二进制文件。此外,运行时间大致相同。命令行上也没有指示已生成或使用配置文件。
我在这里做错了什么?