GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Betriebssystemspezifische Anweisungen in CMAKE:Gewusst wie?

Verwenden Sie

if (WIN32)
    #do something
endif (WIN32)

oder

if (UNIX)
    #do something
endif (UNIX)

oder

if (MSVC)
    #do something
endif (MSVC)

oder ähnlich

siehe Nützliche CMake-Variablen und CMake-Prüfplattform


Allgemein

Sie können Variablen für mehrere Betriebssysteme wie folgt erkennen und spezifizieren:

Microsoft Windows erkennen

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

Oder:

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

Apple MacOS erkennen

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

Unix und Linux erkennen

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

Ihr spezifisches Linker-Problem

Um Ihr Problem mit dem Windows-spezifischen wsock32 zu lösen Bibliothek, entfernen Sie sie einfach von anderen Systemen, so:

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

Sie haben einige spezielle Wörter von CMAKE, werfen Sie einen Blick darauf:

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

Da dies ein so häufiges Problem ist, 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 boolesche Logikdokumentation

CMake-Plattformnamen usw.


Linux
  1. So verwenden Sie BusyBox unter Linux

  2. So löschen Sie einen bestimmten Befehl aus dem Bash-Verlauf in Linux

  3. So finden Sie bestimmten Text mit GREP unter Linux

  4. So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest

  5. wie man netstat auf einem bestimmten Port in Linux verwendet

So extrahieren Sie Tar-Dateien in ein bestimmtes oder anderes Verzeichnis in Linux

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

So schließen Sie bestimmte Verzeichnisse vom Kopieren in Linux aus

So zeigen Sie einen bestimmten Abschnitt in Manpages in Linux an

So entfernen Sie Dateien mit einer bestimmten Erweiterung in Linux

So deaktivieren Sie die SSH-Anmeldung für einen bestimmten Benutzer in Linux