Visual Studio忽略CMake链接器标志以进行配置文件引导的优化

时间:2019-02-24 15:32:47

标签: visual-studio visual-c++ cmake linker pgo

我有一个Runtime项目,该项目使用C++作为CMake中的构建系统。根据{{​​3}},我必须使用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}") 中定义它们,如本the documentation所示。

现在,如果我运行应用程序的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}") 不会生成其他二进制文件。而且,运行时间大致相等。命令行上也没有指示已生成或使用配置文件。

我在这里做什么错了?

0 个答案:

没有答案