Link 带有 CMake 的 OpenSubdiv 库
Link library OpenSubdiv with CMake
我正在尝试制作一个使用 Pixar 的 OpenSubdiv 库的 C++ 程序:https://github.com/PixarAnimationStudios/OpenSubdiv
我已经成功构建了库,包括使用该库的 "tutorials"。
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)
这成功地编译了代码,没有任何错误消息,但是当我尝试执行代码时,它显示 "error while loading shared libraries: libosdCPU.so.3.0.0.beta: cannot open shared object file: No such file or directory"。
我曾尝试将库名称更改为 "osdCPU.so.3.0.0.beta"(这在编译时会出错),并且我曾尝试使用这两个库名称(这会给出相同的错误)。文件 "libosdCPU.so.3.0.0.beta" 位于 OpenSubdiv/build/lib 文件夹内,就在 "libosdCPU.so".
旁边
有人知道怎么回事吗?
您还必须使用 CMake 命令 link_directories
.
提供库 osdCPU
的位置
此外,我鼓励您使用像这样的特定变量来形式化您的代码(包括您可以通过命令 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})
我正在尝试制作一个使用 Pixar 的 OpenSubdiv 库的 C++ 程序:https://github.com/PixarAnimationStudios/OpenSubdiv
我已经成功构建了库,包括使用该库的 "tutorials"。
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)
这成功地编译了代码,没有任何错误消息,但是当我尝试执行代码时,它显示 "error while loading shared libraries: libosdCPU.so.3.0.0.beta: cannot open shared object file: No such file or directory"。
我曾尝试将库名称更改为 "osdCPU.so.3.0.0.beta"(这在编译时会出错),并且我曾尝试使用这两个库名称(这会给出相同的错误)。文件 "libosdCPU.so.3.0.0.beta" 位于 OpenSubdiv/build/lib 文件夹内,就在 "libosdCPU.so".
旁边有人知道怎么回事吗?
您还必须使用 CMake 命令 link_directories
.
osdCPU
的位置
此外,我鼓励您使用像这样的特定变量来形式化您的代码(包括您可以通过命令 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})