Skip to content

CMake error caused by the merge of #2100 #2427

Closed
@jasjuang

Description

@jasjuang

Your Environment

  • Operating System and version: Ubuntu 18.04
  • Compiler: GCC 7
  • PCL Version: Latest

Context

With the latest merge of #2100, there is a problem when a library is linking to another library that links to PCL, please see below minimal to reproduce the problem.

CMakeLists.txt

cmake_minimum_required(VERSION 3.11)

project(sample)

find_package( PCL REQUIRED )

add_library(${PROJECT_NAME} SHARED Sample.cpp Sample.h)

target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES})

add_subdirectory(sample2)

Sample.cpp

#include "Sample.h"

Sample::Sample() {}

Sample::~Sample() {}

Sample.h

class Sample{
 public:
  Sample();
  ~Sample();
};

sample2/CMakeLists.txt

cmake_minimum_required(VERSION 3.11)

project(sample2)

find_package( PCL REQUIRED )

add_library(${PROJECT_NAME} SHARED Sample2.cpp Sample2.h)

# not even linking to ${PCL_LIBRARIES}
target_link_libraries(${PROJECT_NAME} sample)

sample2/Sample2.cpp

#include "Sample2.h"

Sample2::Sample2() {}

Sample2::~Sample2() {}

sample2/Sample2.h

class Sample2{
 public:
  Sample2();
  ~Sample2();
};

Expected Behavior

After

mkdir build 
cd build 
cmake ..

It should work without a problem.

Current Behavior

However, here is the output

-- Eigen found (include: /usr/include/eigen3, version: 3.3.90)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   system
--   filesystem
--   thread
--   date_time
--   iostreams
--   serialization
--   chrono
--   atomic
--   regex
-- FLANN found (include: /usr/include, lib: optimized;/usr/lib/libflann_cpp.so;debug;/usr/lib/libflann_cpp.so)
-- FLANN found (include: /usr/include, lib: optimized;/usr/lib/libflann_cpp.so;debug;/usr/lib/libflann_cpp.so)
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- LIBUSB_1_LIBRARY (missing: LIBUSB_1_INCLUDE_DIR) 
** WARNING ** io features related to libusb-1.0 will be disabled
-- QHULL found (include: /usr/include, lib: optimized;/usr/lib/x86_64-linux-gnu/libqhull.so;debug;/usr/lib/x86_64-linux-gnu/libqhull.so)
-- looking for PCL_COMMON
-- looking for PCL_KDTREE
-- looking for PCL_OCTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_IO
-- 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_CUDA_COMMON
-- looking for PCL_CUDA_FEATURES
-- looking for PCL_CUDA_SEGMENTATION
-- looking for PCL_CUDA_SAMPLE_CONSENSUS
-- looking for PCL_OUTOFCORE
-- looking for PCL_GPU_CONTAINERS
-- looking for PCL_GPU_UTILS
-- looking for PCL_GPU_OCTREE
-- looking for PCL_GPU_FEATURES
-- looking for PCL_GPU_SEGMENTATION
-- looking for PCL_PEOPLE
-- Eigen found (include: /usr/include/eigen3, version: 3.3.90)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   system
--   filesystem
--   thread
--   date_time
--   iostreams
--   serialization
--   chrono
--   atomic
--   regex
-- FLANN found (include: /usr/include, lib: optimized;/usr/lib/libflann_cpp.so;debug;/usr/lib/libflann_cpp.so)
-- FLANN found (include: /usr/include, lib: optimized;/usr/lib/libflann_cpp.so;debug;/usr/lib/libflann_cpp.so)
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- LIBUSB_1_LIBRARY (missing: LIBUSB_1_INCLUDE_DIR) 
** WARNING ** io features related to libusb-1.0 will be disabled
-- QHULL found (include: /usr/include, lib: optimized;/usr/lib/x86_64-linux-gnu/libqhull.so;debug;/usr/lib/x86_64-linux-gnu/libqhull.so)
-- looking for PCL_COMMON
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_common" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_KDTREE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_kdtree" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_OCTREE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_octree" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_SEARCH
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_search" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_SAMPLE_CONSENSUS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_sample_consensus" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_FILTERS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_filters" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_IO
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_io" because another target
  with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_FEATURES
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_features" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_ML
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_ml" because another target
  with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_SEGMENTATION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_segmentation" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_VISUALIZATION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_visualization" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_SURFACE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_surface" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_REGISTRATION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_registration" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_KEYPOINTS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_keypoints" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_TRACKING
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_tracking" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_RECOGNITION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_recognition" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_STEREO
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_stereo" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_CUDA_COMMON
-- looking for PCL_CUDA_FEATURES
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_cuda_features" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_CUDA_SEGMENTATION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_cuda_segmentation" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_CUDA_SAMPLE_CONSENSUS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_cuda_sample_consensus"
  because another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_OUTOFCORE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_outofcore" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_GPU_CONTAINERS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_gpu_containers" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_GPU_UTILS
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_gpu_utils" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_GPU_OCTREE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_gpu_octree" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_GPU_FEATURES
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_gpu_features" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_GPU_SEGMENTATION
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_gpu_segmentation" because
  another target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)


-- looking for PCL_PEOPLE
CMake Error at /usr/share/pcl-1.8/PCLConfig.cmake:630 (add_library):
  add_library cannot create imported target "pcl_people" because another
  target with the same name already exists.
Call Stack (most recent call first):
  sample2/CMakeLists.txt:5 (find_package)

-- Configuring incomplete, errors occurred!

This problem pops up only after the merge of #2100, if I remove the find_package( PCL REQUIRED ) in sample2/CMakeLists.txt the error goes away, but I should be allowed to call find_package( PCL REQUIRED ) in sample2/CMakeLists.txt even if it's redundant.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions