GNU/Linux >> Tutoriels Linux >  >> Linux

Instructions spécifiques au système d'exploitation dans CMAKE :comment faire ?

Utiliser

if (WIN32)
    #do something
endif (WIN32)

ou

if (UNIX)
    #do something
endif (UNIX)

ou

if (MSVC)
    #do something
endif (MSVC)

ou similaire

voir CMake Useful Variables et CMake Checking Platform


En général

Vous pouvez détecter et spécifier des variables pour plusieurs systèmes d'exploitation comme celui-ci :

Détecter Microsoft Windows

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

Ou :

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

Détecter Apple MacOS

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

Détecter Unix et Linux

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

Votre problème spécifique avec l'éditeur de liens

Pour résoudre votre problème avec le wsock32 spécifique à Windows bibliothèque, supprimez-la simplement des autres systèmes, comme ceci :

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

Vous avez des mots spéciaux de CMAKE, jetez un oeil :

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

Étant donné qu'il s'agit d'un problème si courant, 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 logique booléenne docs

CMake noms de plate-forme, etc.


Linux
  1. Comment tuer un processus exécuté sur un port spécifique sous Linux ?

  2. Comment rechercher un texte spécifique à l'aide de GREP sous Linux

  3. Comment compresser tous les fichiers ou des fichiers spécifiques sous Linux

  4. Comment désactiver une commande spécifique pour un utilisateur spécifique sous Linux

  5. Comment arrêter Linux à une date et heure spécifique depuis le terminal ?

Comment exécuter une commande pendant une durée spécifique sous Linux

Comment afficher une section spécifique dans les pages de manuel sous Linux

Comment supprimer des fichiers avec une extension spécifique sous Linux

Comment désactiver la connexion SSH à un utilisateur spécifique sous Linux

Comment vérifier si un binaire nécessite SSE4 ou AVX sous Linux

linux - comment lister les partitions d'un type spécifique ?