[英]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.