GNU/Linux >> Linux の 問題 >  >> Linux

CMAKE での OS 固有の手順:方法は?

使う

if (WIN32)
    #do something
endif (WIN32)

または

if (UNIX)
    #do something
endif (UNIX)

または

if (MSVC)
    #do something
endif (MSVC)

または類似の

CMake の便利な変数と CMake のチェック プラットフォームを参照してください


全般

次のように、いくつかのオペレーティング システムの変数を検出して指定できます。

Microsoft Windows の検出

if(WIN32)
    # for Windows operating system in general
endif()

または:

if(MSVC OR MSYS OR MINGW)
    # for detecting Windows compilers
endif()

Apple MacOS の検出

if(APPLE)
    # for MacOS X or iOS, watchOS, tvOS (since 3.10.3)
endif()

Unix と Linux の検出

if(UNIX AND NOT APPLE)
    # for Linux, BSD, Solaris, Minix
endif()

特定のリンカーの問題

Windows 固有の wsock32 で問題を解決するには 他のシステムから削除してください:

if(WIN32)
    target_link_libraries(${PROJECT_NAME} bioutils wsock32)
else
    target_link_libraries(${PROJECT_NAME} bioutils)
endif()

CMAKE からの特別な言葉があります。ご覧ください:

if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
    // do something for Linux
else
    // do something for other OS

これは非常に一般的な問題であるため、geronto-posting:

    if(UNIX AND NOT APPLE)
        set(LINUX TRUE)
    endif()

    # if(NOT LINUX) should work, too, if you need that
    if(LINUX) 
        message(STATUS ">>> Linux")
        # linux stuff here
    else()
        message(STATUS ">>> Not Linux")
        # stuff that should happen not on Linux 
    endif()

CMake ブール論理ドキュメント

CMake プラットフォーム名など


Linux
  1. LinuxでBusyBoxを使用する方法

  2. Linuxでのコピーから特定のディレクトリを除外する方法

  3. Linuxで特定のリポジトリからパッケージをインストールする方法

  1. Linux で GREP を使用して特定のテキストを検索する方法

  2. Linux で特定のプログラムのプロセス ID を設定する方法

  3. Linux の特定のポートで netstat を使用する方法

  1. Linuxで特定のディレクトリまたは別のディレクトリにtarファイルを抽出する方法

  2. Linuxの特定のポートで実行されているプロセスを強制終了する方法は?

  3. Linux - 特定のタイプのパーティションを一覧表示する方法は?