一、搭建编译环境
我在网上找到一篇文章,按着步骤就能成功搭建:osg开发配置与第一个osg程序。大致步骤:
- 下载安装 VS2022
- 下载 osg3.6.5Vs2022X64 编译库
- 编写、编译并运行第一个 osg 程序
二、编译第一个 CMake C++程序
- CMakeLists.txt 文件代码
project("learn_osg_01")
add_executable(${PROJECT_NAME} main.cpp)
- main.cpp 文件代码
#include <iostream>
int main(int argc, char** argv)
{
std::cout << "Hello, osg!" << std::endl;
return 0;
}
-
结果
结果
三、编译第一个 OSG 程序
- CMakeLists.txt 文件代码
#project()指令的作用是设置项目名称,并存放在变量PROJECT_NAME中,如果在顶层的CMakeLists.txt中调用此指令,会同时把项目名称存放在变量CMAKE_PROJECT_NAME中
project("learn_osg_01")
#我们要引入osg库,首先要告诉编译器库头文件的位置。在CMake中使用include_directories()指令实现。
set(OSG_DIR "E:\vs2022\osg3.6.5Vs2022X64")
include_directories(${OSG_DIR}/include)
link_directories(${OSG_DIR}/lib)
#add_executable()指令的作用是使用指定的源文件生成目标可执行文件,指令的第一个参数是要生成可执行文件(Windows系统中是exe文件)的名称,
#本例中会生成"learn_osg_01.exe",名字后边的参数是源文件列表,
#此例中目前只有一个源文件,即"main.cpp",如有多个源文件,要依次列在后边,用空格或换行隔开。
add_executable(${PROJECT_NAME} main.cpp)
#target_link_libraries()指令指定哪些库需要链接到目标上。本例的目标是最终要生成的exe文件,由上文中add_executable()指令指定,需要链接的库是osgd.lib和osgViewerd.lib。
target_link_libraries(${PROJECT_NAME}
osgd
osgViewerd
osgDBd
)
file(GLOB OSG_DLLS ${OSG_DIR}/bin/*.dll)
file(GLOB OSG_DLLS ${OSG_DIR}/bin/osgPlugins-3.6.5/*.dll)
file(COPY ${OSG_DLLS} DESTINATION ${CMAKE_BINARY_DIR})
- main.cpp 文件代码
#include <osgViewer/Viewer>
#include <iostream>
int main(int argc, char** argv)
{
std::cout << "Hello, osg!" << std::endl;
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->setUpViewInWindow(50, 50, 800, 600);
return viewer->run();
}
- 效果图
OSG效果
四、出现的问题
- 运行OSG时目标还不能正常运行,因为找不到动态链接库,只能手动添加;解决方法:由于找不到osg130-osgDBd.dll,无法继续执行代码。重新安装程序可能会解决问题













网友评论