Cmake: link 打开场景图到我的共享库
Cmake: link openscenegraph to my shared library
我是 CMake 的新手,我需要 link 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})
一切看起来都是 linking,CMake 没有给我任何错误,但是在使用 Visual Studio 2010 构建期间我遇到了如下错误:
fatal error C1083: Cannot open include file: 'osg/Node': No such file or directory
通常我会在不问问题的情况下找到所有问题的答案(这是我在这里的第一个问题)。
这可能是微不足道的,但有人可以告诉我我做错了什么,我怎样才能让它发挥作用?
这似乎与链接无关,而是与编译有关。该错误表明 MSVC 在包含的目录列表中找不到文件 'osg/Node'。
在您的源代码中的某处,您可能有一个像
这样的包含
#include "osg/Node"
因此编译器将在 'include directories'.
之一的名为 '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,则必须在 include 目录中添加 C:/path/to/openscenegraph/include
(来自 CMake 脚本)
include_directories(C:/path/to/openscenegraph/include)
我是 CMake 的新手,我需要 link 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})
一切看起来都是 linking,CMake 没有给我任何错误,但是在使用 Visual Studio 2010 构建期间我遇到了如下错误:
fatal error C1083: Cannot open include file: 'osg/Node': No such file or directory
通常我会在不问问题的情况下找到所有问题的答案(这是我在这里的第一个问题)。 这可能是微不足道的,但有人可以告诉我我做错了什么,我怎样才能让它发挥作用?
这似乎与链接无关,而是与编译有关。该错误表明 MSVC 在包含的目录列表中找不到文件 'osg/Node'。
在您的源代码中的某处,您可能有一个像
这样的包含#include "osg/Node"
因此编译器将在 'include directories'.
之一的名为 '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,则必须在 include 目录中添加 C:/path/to/openscenegraph/include
(来自 CMake 脚本)
include_directories(C:/path/to/openscenegraph/include)