我正在尝试使用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告诉我“配置过程中出错,项目文件可能无效”
答案 0 :(得分: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的那一行
答案 1 :(得分:0)
在正常情况下,CMake不应该为Windows寻找pthread
。以下是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等,并尝试修复它。