使う
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 プラットフォーム名など