我正在尝试制作一个使用Pixar中的OpenSubdiv库的C ++程序:https://github.com/PixarAnimationStudios/OpenSubdiv

我设法建立了包括使用库的“教程”在内的库。

OpenSubdiv和我自己的程序都是使用CMake构建的(我有一些经验,但经验不足)。出于测试目的,我在C ++代码所在的位置有一个项目文件夹,在此文件夹内,还有一个OpenSubdiv文件夹,在该文件夹中我已在OpenSubdiv / build中构建了库。我用于测试的C ++代码与pixar提供的带opensubdiv的教程之一相同,称为“ far_tutorial_0.cpp”。本教程可以在Opensubdiv文件夹中编译和正常工作,并且使用非常长且复杂的CMake脚本来安装整个库。但是,当我将其从Opensubdiv文件夹移出并尝试使用简单的CMake脚本进行编译时,出现了问题。这是我使用的CMake脚本:

cmake_minimum_required (VERSION 2.6)

project (test)

add_executable(test test.cpp)

include_directories(OpenSubdiv/build)
target_link_libraries(test osdCPU)


这样可以在没有任何错误消息的情况下编译代码,但是当我尝试执行代码时,它说“加载共享库时出错:libosdCPU.so.3.0.0.beta:无法打开共享库文件:没有这样的文件或目录”。

我尝试将库名称更改为“ osdCPU.so.3.0.0.beta”(编译时给出错误),并且尝试使用两个库名称(给出相同错误)。文件“ libosdCPU.so.3.0.0.beta”位于OpenSubdiv / build / lib文件夹内,紧挨在“ libosdCPU.so”旁边。

有人知道怎么了吗?

最佳答案

您还必须使用CMake命令osdCPU提供库link_directories的位置。

此外,我建议您使用这样的特定变量(包括可以通过命令ccmake修改的缓存变量)来使代码形式化:

set(osdCPU_PATH_DEFAULT "/default/path/to/osdCPU")
set(osdCPU_PATH "${osdCPU_PATH_DEFAULT}" CACHE PATH "Path to osdCPU")
set(osdCPU_INCLUDE_DIRS ${osdCPU_PATH}/include)
set(osdCPU_LIBRARY_DIRS ${osdCPU_PATH}/lib)
set(osdCPU_LIBRARIES osdCPU)


那你可以打电话

include_directories(${osdCPU_INCLUDE_DIRS})
link_directories(${osdCPU_LIBRARY_DIRS})
# ...
target_link_libraries(test ${osdCPU_LIBRARIES})

关于c++ - 使用CMake链接库OpenSubdiv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29257704/

10-13 05:04