gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:12 24 4
gpt4 key购买 nike

我刚开始使用 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

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

最佳答案

这似乎与链接无关,而是与编译有关。该错误表明 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 的内容,那么您应该使用

导入 Node
#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)

关于c++ - Cmake:将 openscenegraph 链接到我的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com