48

短いバージョン: 1つのプラットフォームでのみ機能するビルドオプションがあります。autotoolsフォームを変換しているファイルには、フォームのチェックがありますif test "$platform_linux" != "yes"。同じことを自分で行うことはできますかCMakeLists.txt(値が等しくないかどうかをテストします)?

少し長いバージョン:ここにあるアドバイスに従って、さまざまなプラットフォームのテストを行いました:


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年のメーリングリストの投稿です。これは、以前NOTは有効ではないことを示唆しています。[リンク]。cmake1.2

これは、特におよび/またはそれ以降cmakeのバージョンでも当てはまりますか?2.62.8

4

1 に答える 1

85

あなたは近いです!の正しい構文IFは次のとおりです。

IF(NOT <expression>)

したがって、特定のケースでは、必要です

IF(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux"). 
于 2012-07-31T19:36:29.653 に答える