将库OpenSubdiv与CMake链接

时间:2015-03-25 13:54:20

标签: c++ cmake

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

我已经设法构建了库,包括使用该库的“教程”。

OpenSubdiv和我自己的程序都是用CMake构建的(我有一些,但没有多少经验)。出于测试目的,我有一个项目文件夹,我的C ++代码所在,我在这个文件夹中我还有一个OpenSubdiv文件夹,我在OpenSubdiv / build中构建了库。我用于测试目的的C ++代码与pixar with 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”。

有人知道什么是错的吗?

1 个答案:

答案 0 :(得分:1)

您还必须使用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})