компилятор
генератор
check_ipo_supported
msvc
NMake Makefile
TRUE
g++ (из MSYS2)
MinGW Makefile
TRUE
clang++ (из MSYS2)
MinGW Makefiles
FALSE
Результат для clang неожиданный.
Это ошибка? (Я мог найти аналогичную неподтвержденную проблему CMake: https://gitlab.kitware.com/cmake/cmake/-/issues/21635).
MRE можно достичь с помощью следующего CMakeLists.txt:
Код: Выделить всё
cmake_minimum_required(VERSION 3.10)
project(checkipo)
add_executable(checkipo main.cpp)
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_SUPPORTED)
if(IPO_SUPPORTED)
message("IPO SUPPORTED")
else()
message(WARNING "IPO NOT SUPPORTED")
endif()
target_compile_options(checkipo PRIVATE -std=c++20 -Wall -Wextra -pedantic -Wshadow -O3)
Код: Выделить всё
int main() {}
Код: Выделить всё
CMake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -G "MinGW Makefiles" -B "./build"
IPO НЕ ПОДДЕРЖИВАЕТСЯ
Пока:
Код: Выделить всё
CMake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++ -G "MinGW Makefiles" -B "./build"
IPO ПОДДЕРЖИВАЕТСЯ
По предложению Цыварева я записал в журнал вывод check_ipo_supported, добавив OUTPUT Reason, и он показывает, что CMAKE_CXX_COMPILER_AR установлен в значение CMAKE_CXX_COMPILER_AR-NOTFOUND.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ed-by-msys
Мобильная версия