CMake的: 在Windows中未发现(CMake : not foun

2019-08-02 07:27发布

我是新手用CMake的。 我测试了它在Linux上的一个程序,我做。 这个程序使用(POSIX线程LIB),所以在我CMakeList,我说:

find_package(Threads)

它适用于Linux的发行商(拱,薄荷,Ubuntu的,...),但现在,我想它在WINDOWS32(Visual Studio的9 2008年),我生成过程中得到这个消息:

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

(当我编译输出的项目文件,pthread.h确实没有找到)。

在Windows上,考虑到“C:\并行线程”作为我的并行线程的目录,我在路径定义:

  • “C:\并行线程\包括”(其中驻留的著名的 “pthread.h”)
  • “C:\并行线程\”(在CMake的寻找一个的情况下“包括”的地方)

但我仍然得到同样的错误(即使删除后高速缓存)。 我知道,在我的项目,我可以“人工”添加的Pthread,或定义在CMakeList.txt一些常量,但我认为这是不CMake的原则:我可以对所有系统使用相同的“CMakeList.txt”,对不对? 所以,我怎么能告诉CMake的“嘿!这里看起来!Pthread的是在这个目录中!”。 也许CMake的不看的路径,但在另一个环境变量,但我没有找到这些信息。

谢谢您的阅读。

编辑:我不知道这是否有差别,但我的项目是一个C ++项目(不是C)

Answer 1:

我做了什么,我编辑了cmake的文件:

option(CMAKE_USE_WIN32_THREADS_INIT "using WIN32 threads" ON)

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

(我使用谷歌测试)



Answer 2:

据我所知,P线程本身并不支持Windows平台。 除非你使用像一些事情

UNIX的服务取胜

仅适用于Windows有win32的线程。

然而,这是它提供了在Windows并行线程项目

在Win32并行线程



Answer 3:

显然,CMAKE_USE_WIN32_THREADS_INIT是在所有平台方面非常有用。 这个变量产生或初始化上findPackage(线程)的调用,最好是它处理连接在所有平台上的问题的情况下,线程库需要与可执行链接。 基本上,它在平台的UNIX类平台产生适当的线程库名称,然后是平台空例如在不需要明确的连接线程库窗口。 参考:CMake的findThreads https://cmake.org/cmake/help/v3.0/module/FindThreads.html?highlight=threads



文章来源: CMake : not found in Windows