CMake : <pthread.h> ne trouve pas dans Windows
Je suis novice avec CMake. Je l'ai testé sur Linux pour un programme que j'ai fais. Ce programme utilise (POSIX Threads lib), donc dans mon CMakeList, j'ai ajouté :
find_package(Threads)
Il fonctionne sur les distribs Linux (Arch, Mint, Ubuntu, ...), mais maintenant, je suis en train de l'essayer dans Windows32 (Visual Studio 9 2008), et je reçois ce message lors de la génération :
-- Looking for include file pthread.h - not found
(et quand je compile projet de sortie de fichier, pthread.h est en effet pas trouvé).
Sur Windows, considérant "C:\pthread" comme mon pthread répertoire, j'ai défini dans le chemin d'accès :
- "C:\pthread\include" (où réside le fameux "pthread.h")
- "C:\pthread\" (dans le cas où CMake à la recherche d'un "include" quelque part)
Mais j'ai toujours le même message d'erreur (même après avoir supprimé le cache). Je sais que je pourrais "manuellement" ajouter Pthread dans mon Projet, ou de définir des constantes dans CMakeList.txt mais je pense que c'est pas le principe de CMake : je pourrais utiliser le MÊME "CMakeList.txt" sur tous les systèmes, à droite ? Alors, comment puis-je dire à CMake "Hey ! Regarde ici ! Pthread est dans ce répertoire !".
Peut-être que Cmake ne regarde pas dans le CHEMIN, mais dans une autre variable d'environnement, mais je n'ai pas trouver cette information.
Vous remercie pour la lecture.
EDIT : je ne sais pas si cela fait une différence, mais mon projet est un projet C++ (C)
En regardant le code pour FindThreads dans CMake 2.8.10 il ressemble à windows, il sera par défaut à utiliser les threads windows.
Je n'ai pas testé. Voir si CMAKE_USE_PTHREADS_INIT ou juste CMAKE_USE_WIN32_THREADS_INIT.
OriginalL'auteur Neozaru | 2012-11-04
Vous devez vous connecter pour publier un commentaire.
Ce que j'ai fait, j'ai édité le fichier cmake:
et
(Je suis en utilisant google test)
OriginalL'auteur radato
Apparemment le CMAKE_USE_WIN32_THREADS_INIT est utile dans le contexte de toutes les plates-formes. Cette variable est générée ou initialisé sur l'invocation de la findPackage(Threads), dans l'idéal, il gère la liaison des questions sur toutes les plates-formes au fil du cas de la bibliothèque est nécessaire pour être lié avec l'exécutable. Fondamentalement, il génère thread nom de bibliothèque sur la plate-forme unix comme les plates-formes et est vide sur la plate-forme tels que windows où explicite le filetage de la bibliothèque n'est pas nécessaire pour la liaison.
Référence: CMake findThreads https://cmake.org/cmake/help/v3.0/module/FindThreads.html?highlight=threads
OriginalL'auteur Saif Mulla
Autant que je sache, Pthreads n'est pas pris en charge nativement sur windows plate-forme. Sauf si vous utilisez quelque chose comme
gagnez des services pour unix
Windows uniquement a les threads win32.
Cependant, c'est un projet qui fournit des pthreads sur windows
pthreads sur win32
err ok je pensais que tu parlais de linux pthread package que vous avez copié ici.
Non, j'en ai pthreads pour win32, avec les en-têtes et les paquets pré-compilés. Mais CMake ne le trouve pas
OriginalL'auteur fayyazkl