C++ Cmake:将openscenegraph链接到我的共享库

C++ Cmake:将openscenegraph链接到我的共享库,c++,visual-studio-2010,cmake,openscenegraph,C++,Visual Studio 2010,Cmake,Openscenegraph,我是使用CMake的新手,我需要将openscenegraph库链接到我的共享库 负责此操作的部分代码如下所示: add_library (MyLib SHARED ${${PROJECT_NAME}_sources}) target_link_libraries(MyLib ${OPENSCENEGRAPH_LIBRARIES}) find_package(OpenSceneGraph REQUIRED osgDB osgUtil osg osgViewer osgGA osgShadow)

我是使用CMake的新手,我需要将openscenegraph库链接到我的共享库

负责此操作的部分代码如下所示:

add_library (MyLib SHARED ${${PROJECT_NAME}_sources})
target_link_libraries(MyLib ${OPENSCENEGRAPH_LIBRARIES})
find_package(OpenSceneGraph REQUIRED osgDB osgUtil osg osgViewer osgGA osgShadow)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
add_definitions(${OPENSCENEGRAPH_DEFINITIONS})
我发现osg是这样的:

add_library (MyLib SHARED ${${PROJECT_NAME}_sources})
target_link_libraries(MyLib ${OPENSCENEGRAPH_LIBRARIES})
find_package(OpenSceneGraph REQUIRED osgDB osgUtil osg osgViewer osgGA osgShadow)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
add_definitions(${OPENSCENEGRAPH_DEFINITIONS})
一切看起来都在链接,CMake没有给我任何错误,但在使用Visual Studio 2010构建过程中,我遇到了如下错误:

fatal error C1083: Cannot open include file: 'osg/Node': No such file or directory
通常我都是在不提问的情况下找到所有问题的答案(这是我在这里的第一个问题)。
这可能很琐碎,但有人能告诉我我做错了什么,以及如何让它工作吗?

这似乎与链接无关,而与编译有关。错误表明MSVC在包含的目录列表中找不到文件“osg/Node”

在源代码的某个地方,您可能有一个include,比如

#include "osg/Node"
因此,编译器将在其中一个“include目录”中名为“osg”的目录中搜索名为“Node”的文件

在CMake中,打印OpenSceneGraph的包含目录列表(在
find_package(OpenSceneGraph…)之后)

然后检查此列表。如果它包含类似于
C:/path/to/openscenegraph/include的内容,则应该使用

#include "osg/Node"
如果每个模块都有一个文件夹(例如:
C:/path/to/openscenegraph/include/osg
),则必须使用

#include "Node"
如果不想修改代码中的include,则必须在include目录(来自CMake脚本)中添加
C:/path/to/openscenegraph/include