windows header include pthreads cmake

CMake:<pthread.h> no se encuentra en Windows



header include (3)

Aparentemente, el CMAKE_USE_WIN32_THREADS_INIT es útil en el contexto de todas las plataformas. Esta variable se genera o se inicializa al invocar findPackage (Threads), idealmente maneja problemas de enlace en todas las plataformas en caso de que se requiera que la biblioteca de hilos esté vinculada con el ejecutable. Básicamente, genera el nombre apropiado de la biblioteca de subprocesos en la plataforma Unix como plataformas y está vacío en la plataforma, como Windows, donde no se requiere una biblioteca explícita de subprocesos para enlazar. Referencia: CMake findThreads https://cmake.org/cmake/help/v3.0/module/FindThreads.html?highlight=threads

Soy novato con CMake. Lo probé en Linux para un programa que estoy haciendo. Este programa usa (POSIX Threads lib), así que en mi CMakeList, agregué:

find_package(Threads)

Funciona en distribs de Linux (Arch, Mint, Ubuntu, ...), pero ahora, lo intento en Windows32 (Visual Studio 9 2008), y recibo este mensaje durante la generación:

-- Looking for include file pthread.h - not found

(y cuando compilo el archivo del proyecto de salida, pthread.h de hecho no se encuentra).

En Windows, considerando "C: / pthread" como mi directorio pthread, definí en la ruta:

  • "C: / pthread / include" (donde reside el famoso "pthread.h")
  • "C: / pthread /" (en el caso en que CMake busque un "incluir" en algún lugar)

Pero sigo recibiendo el mismo error (incluso después de la caché eliminada). Sé que podría "manualmente" agregar Pthread en mi proyecto, o definir algunas constantes en CMakeList.txt, pero creo que no es el principio de CMake: podría usar el MISMO "CMakeList.txt" en todos los sistemas, ¿verdad? Entonces, ¿cómo puedo decirle a CMake "¡Oye, mira aquí! ¡Pthread está en este directorio!". Quizás Cmake no busca en PATH, sino en otra variable de entorno, pero no encontré esta información.

Gracias por leer.

EDITAR: No sé si hace una diferencia, pero mi proyecto es un proyecto de C ++ (no C)


Por lo que sé, Pthreads no es compatible nativamente en la plataforma de Windows. A menos que uses algo como

ganar servicios para Unix

Windows solo tiene hilos Win32.

Sin embargo, este es un proyecto que proporciona pthreads en Windows

pthreads en win32


Lo que hice, edité el archivo cmake:

option(CMAKE_USE_WIN32_THREADS_INIT "using WIN32 threads" ON)

y

option(gtest_disable_pthreads "Disable uses of pthreads in gtest." ON)

(Estoy usando prueba de google)