簡體   English   中英

CMake:將openscenegraph鏈接到我的共享庫

[英]Cmake: link openscenegraph to my shared library

我是使用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”目錄中搜索名為“節點”的文件。

在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"

如果您不想修改代碼中的包含,則必須在包含目錄中添加C:/path/to/openscenegraph/include (來自CMake腳本)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM