2012-07-31 13 views
30

लघु संस्करण: मेरे पास विकल्प हैं जो केवल एक प्लेटफ़ॉर्म पर काम करते हैं। autotools फ़ाइल जिसे मैं रूपांतरित कर रहा हूं, फॉर्म if test "$platform_linux" != "yes" फ़ॉर्म की जांच है। क्या मैं अपने CMakeLists.txt में एक ही चीज़ कर सकता हूं (परीक्षण अगर मूल्य बराबर नहीं है)?यदि मान cmake 2.8

थोड़ा लंबा संस्करण: मैं सलाह निम्नलिखित विभिन्न प्लेटफार्मों के लिए एक परीक्षण में पाया गया here मिल गया है:


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

मैं प्रपत्र IF(${CMAKE_SYSTEM_NAME} NOT MATCHES "Linux") का एक परीक्षण करना चाहते हैं। यह काम नहीं करता है, और एकमात्र दस्तावेज जो मुझे मिल सकता है वह 2002 से मेलिंग-सूची पोस्ट है, जो NOTcmake1.2 से पहले मान्य नहीं है। [Link]।

क्या यह अभी भी cmake संस्करणों में मामला है, विशेष रूप से 2.6 और/या 2.8?

उत्तर

45

आप करीब हैं! IF के लिए सही सिंटैक्स

IF(NOT <expression>) 

तो अपने विशिष्ट मामले में, आप चाहते हैं

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