GNU/Linux >> Linux Esercitazione >  >> Linux

Istruzioni specifiche del sistema operativo in CMAKE:Come?

Usa

if (WIN32)
    #do something
endif (WIN32)

o

if (UNIX)
    #do something
endif (UNIX)

o

if (MSVC)
    #do something
endif (MSVC)

o simile

vedi Variabili utili di CMake e Piattaforma di controllo di CMake


In generale

Puoi rilevare e specificare variabili per diversi sistemi operativi come questo:

Rileva Microsoft Windows

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

Oppure:

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

Rileva Apple MacOS

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

Rileva Unix e Linux

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

Il tuo problema specifico con il linker

Per risolvere il tuo problema con wsock32 specifico per Windows library, basta rimuoverlo da altri sistemi, in questo modo:

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

Hai alcune parole speciali da CMAKE, dai un'occhiata:

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

Dato che si tratta di un problema così comune, 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 documenti di logica booleana

CMake nomi di piattaforme, ecc.


Linux
  1. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  2. Come escludere directory specifiche dalla copia in Linux

  3. Come installare pacchetti da un repository specifico in Linux

  4. Come trovare testo specifico usando GREP su Linux

  5. come utilizzare netstat su una porta specifica in Linux

Come usare BusyBox su Linux

Come eseguire un comando per un tempo specifico in Linux

Come visualizzare una sezione specifica nelle pagine man in Linux

Come rimuovere file con estensione specifica in Linux

Come disabilitare l'accesso SSH a un utente specifico in Linux

Come spegnere Linux a una data e ora specifica dal terminale?