2017-12-22 7 views
0

Ich versuche, mit IPO eine C++ Anwendung zu verwenden CMake 3.10 zu bauen, habe ich im Anschluss an den in meinem CMakeLists.txt:Wie überprüft CMake die IPO-Unterstützung?

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() 

I 7.2 bin mit GCC mit IPO konfigurierte aktiviert (Standard) auf einem CentOS 4 Maschine, und ich bin in der Lage, ein einfaches Testprogramm mit dem -flto Flag zu kompilieren. Doch CMake-Berichte IPO wird nicht unterstützt. Auf mehreren anderen Rechnern wird das gleiche CMake Script IPO unterstützt.

Es würde mir helfen, zu verstehen, was das Problem ist, wenn ich wüsste, wie CMake nach IPO-Unterstützung sucht. Wie funktioniert das CMake Modul CheckIPOSupported?

+0

Entsprechend der Dokumentation des Moduls können Sie die zusätzliche Option "OUTPUT " an das Makro übergeben und den Grund dafür überprüfen. (Alternativ können Sie die Option ERGEBNIS entfernen, damit der Fehlergrund von CMake gedruckt wird). – Tsyvarev

Antwort

1

OUTPUT output zu Ihrem CheckIPO Anruf hinzufügen:

check_ipo_supported(RESULT ipo_supported OUTPUT output) 

Sie output ausdrucken können den Grund zu bekommen, warum es nicht unterstützt wird.

In der Regel hinterlassen fehlgeschlagene Tests Spuren in der Datei CMakeFiles/CMakeError.log innerhalb des Cmake-Build-Verzeichnisses. Überprüfen Sie den entsprechenden Eintrag, um mehr darüber zu erfahren, warum ein Test fehlgeschlagen ist.

Schließlich, um Ihre eigentliche Frage zu beantworten, wie CheckIPOSunterstützte Arbeit: Lesen Sie den Code! Sie können es online finden https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/CheckIPOSupported.cmake
Sie können sogar zusätzliche Ausgabeanweisungen in Ihrer lokalen Kopie hinzufügen, wenn Sie Schwierigkeiten haben, jedes Detail zu verstehen.

Verwandte Themen