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

时间:2015-02-15 19:52:49

标签: c++ visual-studio-2010 cmake openscenegraph

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

负责它的部分代码如下:

add_library (MyLib SHARED ${${PROJECT_NAME}_sources})
target_link_libraries(MyLib ${OPENSCENEGRAPH_LIBRARIES})

我发现这样的osg:

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

通常我会在不问他们的情况下找到我所有问题的答案(这是我的第一个问题)。 这可能是微不足道的,但是有人可以告诉我我做错了什么,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

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

在源代码的某处,你可能有像

这样的包含
#include "osg/Node"

因此编译器将在其中一个“包含目录”中的名为“osg”的目录中搜索名为“Node”的文件。

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

message(STATUS "OSG Incl dirs: ${OPENSCENEGRAPH_INCLUDE_DIRS}")

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

导入节点
#include "osg/Node"

如果您有每个模块的文件夹(例如:C:/path/to/openscenegraph/include/osg),那么您必须使用

#include "Node"

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

include_directories(C:/path/to/openscenegraph/include)