CMake如何检查IPO支持?

问题描述 投票:0回答:1

我正在尝试使用CMake 3.10使用IPO构建C ++应用程序,我在CMakeLists.txt中有以下内容:

include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported)
if(ipo_supported)
    message("-- IPO is supported!")
    set_property(TARGET target PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
    message(WARNING "IPO is not supported!")
endif()

我在CentOS 4机器上使用配置了启用IPO的GCC 7.2(默认),并且我能够使用-flto标志编译一个简单的测试程序。然而,CMake报告不支持IPO。在多台其他计算机上,支持相同的CMake脚本报告IPO。

如果我知道CMake如何检查IPO支持,那将有助于我理解问题所在。 CMake的模块CheckIPOSupported如何工作?

gcc cmake clang lto
1个回答
1
投票

OUTPUT output添加到您的CheckIPO电话:

check_ipo_supported(RESULT ipo_supported OUTPUT output)

您可以打印出output以获得不支持它的原因。

通常,失败的测试会在CMake构建目录中的文件CMakeFiles/CMakeError.log中留下痕迹。检查相应的条目以了解更多测试失败的原因。

最后,回答你的实际问题CheckIPOSupported如何工作:阅读代码!你可以在网上找到https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/CheckIPOSupported.cmake 如果您无法理解每个细节,甚至可以在本地副本中添加其他输出语句。

© www.soinside.com 2019 - 2024. All rights reserved.