GNU/Linux >> Tutoriales Linux >  >> Linux

Instrucciones específicas del sistema operativo en CMAKE:¿Cómo?

Usar

if (WIN32)
    #do something
endif (WIN32)

o

if (UNIX)
    #do something
endif (UNIX)

o

if (MSVC)
    #do something
endif (MSVC)

o similar

consulte CMake Useful Variables y CMake Checking Platform


En general

Puede detectar y especificar variables para varios sistemas operativos así:

Detectar Microsoft Windows

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

O:

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

Detectar MacOS de Apple

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

Detectar Unix y Linux

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

Tu problema específico con el enlazador

Para resolver su problema con el wsock32 específico de Windows biblioteca, simplemente elimínelo de otros sistemas, así:

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

Tienes algunas palabras especiales de CMAKE, echa un vistazo:

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

Dado que este es un problema tan común, 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 documentos de lógica booleana

CMake nombres de plataformas, etc.


Linux
  1. Cómo usar BusyBox en Linux

  2. Cómo extraer archivos Tar a un directorio específico o diferente en Linux

  3. Cómo borrar un comando específico del historial de Bash en Linux

  4. Cómo encontrar texto específico usando GREP en Linux

  5. ¿Cómo deshabilitar ipv6 en una interfaz específica en linux?

Cómo ejecutar un comando durante un tiempo específico en Linux

Cómo ver una sección específica en las páginas man en Linux

Cómo eliminar archivos con extensión específica en Linux

Cómo deshabilitar el inicio de sesión SSH para un usuario específico en Linux

¿Cómo apagar Linux en una fecha y hora específica desde la terminal?

linux:¿cómo enumerar particiones de un tipo específico?