【问题标题】:CMake INTERPROCEDURAL_OPTIMIZATION for Debug only targetsCMake INTERPROCEDURAL_OPTIMIZATION 仅用于调试目标
【发布时间】:2018-12-24 12:53:00
【问题描述】:

我有一个项目,我将其构建为 Debug、Release 和 RelWithDebInfo。从 CMake 3.9.6(我认为?)开始,引入了属性 INTERPROCEDURAL_OPTIMIZATION,其中包括项目的 -flto。但是,我不想在为 Debug 编译时启用 -flto,因为它会减慢编译时间(并且根据我的经验,启用此功能后调试器的稳定性会降低)。

目前我在 CMake 中启用 -flto 的操作如下:

include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_result OUTPUT ipo_err)
if (ipo_result)
    message(STATUS "IPO is supported")
    set_property(GLOBAL PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif ()

我想知道是否只有在启用 Release 时才包含此功能的选项。 此外,我在我的项目中使用了 Xcode 生成器,所以我想知道这个规则(-flto 仅用于调试配置)是否也可以应用于生成的 .xcodeproj?

【问题讨论】:

    标签: xcode cmake


    【解决方案1】:

    请改用INTERPROCEDURAL_OPTIMIZATION_<CONFIG>。请注意,这些是目录和目标属性,不是全局的。因此,您必须为使用它的配置启用它,或者如果启用,您可以将其设置为 false 以停用它。

    【讨论】:

    • 谢谢。另外,为了将来参考,如果想使用 ThinLTO,可以set(_CMAKE_LTO_THIN TRUE)
    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多