2012-07-31 9 views
30

Kurzversion: Ich habe Build-Optionen, die nur auf einer Plattform funktionieren. Die autotools Datei, die ich umwandeln Formular hat eine Überprüfung des Formulars if test "$platform_linux" != "yes". Kann ich dasselbe in meinem CMakeLists.txt (Test, wenn der Wert nicht gleich ist) tun?Wenn der Wert in cmake nicht gleich 2,8 ist

Etwas längere Version: Ich habe im Anschluss an die Beratung ein Test für verschiedene Plattformen bekam here gefunden:


IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 
    # Linux specific code 
    SET(OperatingSystem "Linux") 
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 

Ich möchte IF(${CMAKE_SYSTEM_NAME} NOT MATCHES "Linux") einen Test der Form zu tun. Dies scheint nicht zu funktionieren, und die einzige Dokumentation, die ich finden kann, ist eine Mailing-Liste Post von 2002, die die NOT ist nicht gültig für cmake vor 1.2 vorschlägt. [Link].

Ist dies immer noch der Fall in späteren Versionen cmake, speziell 2.6 und/oder 2.8?

Antwort

45

Sie sind nah dran! Die korrekte Syntax für IF ist

IF(NOT <expression>) 

So in Ihrem speziellen Fall, Sie wollen

IF(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux"). 
Verwandte Themen