繁体   English   中英

在Windows下用Cmake编译OpenSceneGraph

[英]Compile OpenSceneGraph with Cmake under Windows

我正在尝试使用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告诉我“配置过程出错,项目文件可能无效”

您的问题不在您使用的编译器版本中; 实际上,我在Visual Studio 2012上没有问题地运行OpenSceneGraph 3(和osgEarth)。

似乎是Cmake / CMakeLists.txt本身存在问题。 尝试使用cmake构建其他项目,以查看它们是否工作,或者尝试使用与OpenSceneGraph所需版本接近的CMake版本(请在主CMakeLists.txt文件中查看CMAKE_MINIMUM_REQUIRED),尽管CMake旨在兼容对于早期版本,我不知道是否总是这样。

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

通常情况下,CMake不应为Windows寻找pthread 以下是CMake(2.8) FindThreads.cmake的两行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等,然后尝试修复它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM