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)

Puisqu'il n'existe pas de norme chemins pour inclure des fichiers de bibliothèque et sur windows CMake a souvent besoin d'être aidé un long lorsque vous lancer cmake-gui. Une deuxième option est que de nombreux détecteurs de regarder dans les variables d'environnement. Pour trouver par exemple ITK sur mon installation de windows, j'ai ITK_DIR ensemble dans la cmd.exe session que j'ai lancé cmake-gui. En va de même avec beaucoup de paquets. Il y a aussi des options pour find_package que vous pouvez utiliser pour aider à contrôler où CMake ressemble à trouver votre paquet qui peut être une aide.
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