修复VTK 6.2链接错误
Fixing VTK 6.2 linking errors
使用VTK 6.2,在尝试制作项目时存在多个链接错误:
/usr/bin/ld: cannot find -lvtkWrappingTools
/usr/bin/ld: cannot find -lvtkGUISupportQt
/usr/bin/ld: cannot find -lvtkWrappingPythonCore
/usr/bin/ld: cannot find -lvtkFiltersPython
/usr/bin/ld: cannot find -lvtkGUISupportQtSQL
/usr/bin/ld: cannot find -lvtkRenderingQt
/usr/bin/ld: cannot find -lvtkglew
/usr/bin/ld: cannot find -lvtkGUISupportQtOpenGL
/usr/bin/ld: cannot find -lvtkLocalExample
/usr/bin/ld: cannot find -lvtkViewsQt
/usr/bin/ld: cannot find -lvtkoggtheora
/usr/bin/ld: cannot find -lvtkGUISupportQtWebkit
<标题>问题:未解析的链接错误。这可能是路径问题,因为这些库出现在/usr/local/
中,但在编译时ld
看不到…
- 操作系统为Ubuntu 13.10
- VTK是6.2从Kitware github
- CMake文件遵循Kitware CMake为VTK 6+ docs提供的指南
VTK被配置为一个源外的CMake构建(没有问题),然后是make和make install,以便所有的库都正确放置在/usr/local/lib
中。
我的项目构建现在使用以下CMakeLists.txt:
# Add VTK, insist that it uses 6.2,
find_package(VTK 6.2 EXACT REQUIRED NO_MODULE)
include(${VTK_USE_FILE})
find_package(GLEW REQUIRED)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS ${VTK_DEFINITIONS})
include_directories(
${VTK_INCLUDE_DIRS}
${GLEW_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)
####################
# Make my_target
####################
set(EXE my_target)
set(SOURCES
my_target.cpp
)
add_executable(${EXE} ${SOURCES})
target_link_libraries(${EXE} ${VTK_LIBRARIES} ${GLEW_LIBRARY} )
###################
标题>标题>更改find_package参数以指定您想要的模块。例如:
find_package(VTK 6.2 EXACT REQUIRED COMPONENTS
vtkRenderingOpenGL vtkInteractionStyle NO_MODULE)
这个"修复"需要一些时间来找到。看起来默认行为是CMake包括所有 VTK模块…其中一些可能不存在。如果指定了组件,那么默认行为将被禁用。不幸的是,要知道包含哪些库是相当困难的,所以让默认的"包括一切"行为工作是很好的!
我的简单程序没有使用Python或Qt,但ld
仍然想要解决这些基本库。即使在没有Qt或Python模块的情况下构建VTK,这似乎也是正常的行为。
这可能是VTK 6.2中的一个bug。我会向Kitware提出这个问题,当有新的信息可用时,我会修改答案…
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误