Gunakan
if (WIN32)
#do something
endif (WIN32)
atau
if (UNIX)
#do something
endif (UNIX)
atau
if (MSVC)
#do something
endif (MSVC)
atau serupa
lihat CMembuat Variabel yang Bergunadan Platform Pemeriksaan CMembuat
Secara Umum
Anda dapat mendeteksi dan menentukan variabel untuk beberapa sistem operasi seperti itu:
Mendeteksi Microsoft Windows
if(WIN32)
# for Windows operating system in general
endif()
Atau:
if(MSVC OR MSYS OR MINGW)
# for detecting Windows compilers
endif()
Mendeteksi Apple MacOS
if(APPLE)
# for MacOS X or iOS, watchOS, tvOS (since 3.10.3)
endif()
Mendeteksi Unix dan Linux
if(UNIX AND NOT APPLE)
# for Linux, BSD, Solaris, Minix
endif()
Masalah linker khusus Anda
Untuk mengatasi masalah Anda dengan wsock32
khusus Windows perpustakaan, hapus saja dari sistem lain, seperti itu:
if(WIN32)
target_link_libraries(${PROJECT_NAME} bioutils wsock32)
else
target_link_libraries(${PROJECT_NAME} bioutils)
endif()
Anda memiliki beberapa kata khusus dari CMAKE, lihatlah:
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
// do something for Linux
else
// do something for other OS
Mengingat ini adalah masalah umum, 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()
CBuat dokumen logika boolean
CMembuat nama platform, dll.
bagaimana cara terhubung ke SQL Server dengan SQuirreL SQL dari kotak Linux yang tidak terdaftar domain?
Menghitung file secara rekursif dalam direktori Linux