Warning: Targets may link only to libraries. CMake is dropping the item.
使用PCL报warning:
WARNING: Target "generate_pointcloud" requests linking to directory "/home/xxx/pcl/lib". Targets may link only to libraries. CMake is dropping the item.
解决方法:
删除CMakeLists.txt里面的LINK_LIBRARIES( ${PCL_LIBRARY_DIRS} )即可,但ADD_EXECUTABLE后面必须有TARGET_LINK_LIBRARIES,否则报错。
未删除前整个cmake输出如下:
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_ML
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_KEYPOINTS
-- looking for PCL_TRACKING
-- looking for PCL_RECOGNITION
-- looking for PCL_STEREO
-- looking for PCL_APPS
-- looking for PCL_OUTOFCORE
-- looking for PCL_PEOPLE
-- Configuring done
WARNING: Target "generate_pointcloud" requests linking to directory "/home/han/pcl/lib". Targets may link only to libraries. CMake is dropping the item.
-- Generating done
-- Build files have been written to: /home/xxx/RGBD-slam/part II/build
我的CMakeLists.txt如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
project(test_seg_pcl)
list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")
find_package(OpenCV 3.4 REQUIRED)
find_package(PCL 1.7 REQUIRED)
message(STATUS "PCL版本: ${PCL_VERSION}")
INCLUDE_DIRECTORIES( ${PCL_INCLUDE_DIRS} )
LINK_LIBRARIES( ${PCL_LIBRARY_DIRS} )
ADD_DEFINITIONS( ${PCL_DEFINITIONS} )
ADD_EXECUTABLE( generate_pointcloud generatePointCloud.cpp )
TARGET_LINK_LIBRARIES( generate_pointcloud ${OpenCV_LIBS} ${PCL_LIBRARIES} )
这时,在终端编译就会报本文开头的warning。本来这个warning对编译没什么影响,make也不会报错,但作为强迫症患者,我就想解决这个问题。但搜索了半天,还是没有找到解决方法,偶然间在别人的博客中看到了一句,link_libraries已经被弃用,使用TARGET_LINK_LIBRARIES替代,故抱着试一试的态度,删掉了LINK_LIBRARIES( ${PCL_LIBRARY_DIRS} ),随后,就没有出现这个warnning了,即解决了。
参考:
[1]: https://blog.csdn.net/harryhare/article/details/89143410
[2]: https://cmake.org/cmake/help/v3.0/command/link_libraries.html