Sono newbie con CMake. L'ho provato su Linux per un programma che sto realizzando. Questo programma utilizza (POSIX Thread lib), quindi nel mio CMakeList, ho aggiunto:CMake: <pthread.h> non trovato in Windows
find_package(Threads)
Funziona su Distribs Linux (Arch, Mint, Ubuntu, ...), ma ora, sto cercando in Windows32 (Visual Studio 9 2008), e ricevo questo messaggio durante la generazione:
-- Looking for include file pthread.h - not found
(e quando compilo file di progetto in uscita, pthread.h è infatti non trovato).
Su Windows, considerando "C: \ pthread" come il mio elenco pthread, ho definito nel percorso:
- "C: \ pthread \ include" (in cui risiede il famoso "pthread.h")
- "C: \ pthread \" (nel caso in cui CMake cerca un "include" da qualche parte)
Ma ancora ottengo lo stesso errore (cache anche dopo cancellato). So che potrei "manualmente" aggiungi Pthread nel mio progetto, o definire alcune costanti in CMakeList.txt, ma pensa che non è il principio di CMake: ho potuto utilizzare lo stesso "CMakeList.txt" su tutti i sistemi, giusto? Quindi, come posso dire a CMake "Hey! Guarda qui! Pthread è in questa directory!". Forse cmake non sembra in PATH, ma in un'altra variabile d'ambiente, ma non ho trovato queste informazioni.
Grazie per la lettura.
EDIT: Non so se fa la differenza, ma il mio progetto è un progetto C++ (non C)
Poiché non esiste uno standard percorsi per includere e file di libreria su Windows Spesso CMake deve essere aiutato a lungo quando si esegue cmake-gui. Una seconda opzione è che molti cercatori cercano nelle variabili di ambiente. Ad esempio, per trovare ITK sull'installazione di Windows, ho ITK_DIR impostato nella sessione cmd.exe da cui ho avviato cmake-gui. Lo stesso vale per molti pacchetti. Inoltre ci sono opzioni per find_package che puoi usare per aiutare a controllare dove CMake cerca di trovare i tuoi pacchetti che possono essere di aiuto. – drescherjm
Guardando il codice per FindThreads in CMake 2.8.10 sembra che su Windows verrà utilizzato per default i thread di Windows. – drescherjm
Non l'ho provato. Verifica se CMAKE_USE_PTHREADS_INIT è impostato o solo CMAKE_USE_WIN32_THREADS_INIT. – drescherjm