0

我正在尝试使用 Cmake 设置 Openscenegraph 3.0.1。我阅读了不同的博客文章,但它不起作用。

我设置路径,单击编译并选择 VS11(因为我有 VS 2012)并使用本机编译器。

然后我直接得到这个错误:

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules  CMakeCInformation.cmake:37 (get_filename_component):
get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
CMakeLists.txt:3 (PROJECT)


CMake Error: Internal CMake error, TryCompile configure of cmake failed
Looking for include file pthread.h - not found

此外,还会出现更多具有相同堆栈跟踪的错误。如果您愿意,也可以将它们粘贴在这里。

之后,CMake 告诉我“配置过程出错,项目文件可能无效”

4

2 回答 2

0

您的问题不在您使用的编译器版本中;事实上,我在 VisualStudio 2012 上运行 OpenSceneGraph 3(和 osgEarth)没有任何问题。

这似乎是 Cmake/CMakeLists.txt 本身的问题。尝试使用 cmake 构建一些其他项目,看看它们是否有效,或者尝试使用接近 OpenSceneGraph 需要的 CMake 版本(查看主 CMakeLists.txt 文件中的 CMAKE_MINIMUM_REQUIRED ),尽管 CMake 语言是为了兼容对于早期版本,我不知道是否总是这样。

pthread.h 与您的问题无关,在 Windows 中不存在(除非您使用 MinGW 来查找更多问题),并且 OSG 不需要 - 我认为您正确配置 OpenThreads 以不使用库你没有。无论如何,这只是 CMake 在每次构建时所做工作的一部分——寻找一些随机的东西,比如它是否可以找到 pthreads.h,这让 CMake 对你的环境有一些了解,并且通常与你构建的项目无关与 cmake。所以请忽略关于 pthread.h 的那一行

于 2013-10-21T18:28:53.943 回答
0

在正常情况下,CMake 不应该寻找pthreadWindows。以下是 CMake (2.8)FindThreads.cmake中用于搜索适当模块的几行代码。

  ...      
    CHECK_INCLUDE_FILES("pthread.h" CMAKE_HAVE_PTHREAD_H)
    if(CMAKE_HAVE_PTHREAD_H) 
      ...
    endif()
  ...

  if(CMAKE_SYSTEM MATCHES "Windows")
    set(CMAKE_USE_WIN32_THREADS_INIT 1)
    set(Threads_FOUND TRUE)
  endif()

如您所见,第一次检查应该失败并推出到第二次检查。但是,我相信在您的情况下,CMake 以某种方式发现pthread.h(也许您也有 MinGW)这似乎是您系统中的一个简单冲突。检查系统的 PATH 等并尝试修复它。

于 2013-11-12T10:01:29.530 回答