我正在使用cmake的项目结构,这有点不寻常。我的项目分为模块。每个模块都会生成一个对象库和一堆变量,这些变量包含将模块放在一起所必需的元信息。我遇到问题的是包含link_directories
的库目录的那个。
在旧项目中有以下部分
find_package (PCL 1.7 REQUIRED COMPONENTS common io)
include_directories (${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions (${PCL_DEFINITIONS})
$ {PCL_LIBRARIES}的后续链接正常工作。链接描述文件正确包含对/usr/lib64/vtk/vtkSomeLibrary.so.1
的引用。
然而,当我通过从另一个子目段调用find_package
来消除副作用并且只使用给定的变量时,根本找不到pcl需要的vtk库。当我检查PCL_LIBRARY_DIRS
时,我注意到它只包含/usr/lib64
。
所以我想也许VTKConfig.cmake实际上调用link_directories
所以我检查了我的目录的LINK_DIRECTORIES
属性。它只包含/usr/lib64
。
当我浏览VTKConfig.cmake脚本并意识到VTK_LIBRARY_DIRS
从未实际设置时,这真的很奇怪。在旧项目中,我遇到正确路径(/usr/lib64/vtk
)的第一个场合是在链接描述文件中。
这条道路来自哪里?在这一点上,我更感兴趣的是为什么旧项目确实有效,而不是为什么新项目没有。
编辑:我正在尝试使用pcl。这个需要。但是vtk。 pcl包还应包含vtk信息