CMake warning: CMake Targets may link only to libraries. CMake is dropping the item

1.6k Views Asked by At

I am making an anpr algorithm that requires tesseract to decode the image to text. When running cmake .. inside my build dir, I get a warning saying:

┌──(user㉿MacBookArch)-[~/dev/anpr/build]
└─$ cmake ..
-- Configuring done
CMake Warning at CMakeLists.txt:15 (target_link_libraries):
  Target "main" requests linking to directory
  "/home/user/dev/anpr/build/libs/leptonica".  Targets may link only to
  libraries.  CMake is dropping the item.


CMake Warning at CMakeLists.txt:16 (target_link_libraries):
  Target "main" requests linking to directory
  "/home/user/dev/anpr/build/libs/tesseract".  Targets may link only to
  libraries.  CMake is dropping the item.


-- Generating done
-- Build files have been written to: /home/user/dev/anpr/build

This leads me into the thoughts that I have made something wrong. I have copied the repos for leptonica and tesseract into the libs directory for portability.

This is my CMakeLists.txt:

cmake_minimum_required(VERSION 3.2.2)
project( ANPR )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include )

include_directories(${PROJECT_SOURCE_DIR}/libs/tesseract/include)
include_directories(${PROJECT_SOURCE_DIR}/libs/leptonica/include)
link_directories(${PROJECT_SOURCE_DIR}/libs/tesseract)
link_directories(${PROJECT_SOURCE_DIR}/libs/leptonica)

add_executable( main src/main.cpp )

target_link_libraries( main ${OpenCV_LIBS} )
target_link_libraries( main ${CMAKE_CURRENT_BINARY_DIR}/libs/leptonica)
target_link_libraries( main ${CMAKE_CURRENT_BINARY_DIR}/libs/tesseract)

configure_file(   
    ${CMAKE_CURRENT_SOURCE_DIR}/samples/001.jpg
    ${CMAKE_CURRENT_BINARY_DIR}/samples/001.jpg
    COPYONLY
)

and this is my project structure:

.
├── build
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   ├── cmake_install.cmake
│   ├── LeptonicaTargets.cmake
│   ├── libs
│   ├── main
│   ├── Makefile
│   └── samples
├── CMakeLists.txt
...
├── include
│   └── main.hpp
├── libs
│   ├── leptonica
│   └── tesseract
...
├── samples
│   └── 001.jpg
└── src
    └── main.cpp

The contents of the build dir is auto generated with cmake.

make command inside the build dir goes fine without errors even after make clean:

┌──(user㉿MacBookArch)-[~/dev/anpr/build]
└─$ make      
[ 50%] Building CXX object CMakeFiles/main.dir/src/main.cpp.o
[100%] Linking CXX executable main
[100%] Built target main

How can I resolve this warning? I am open to all improvements, thank you!

0

There are 0 best solutions below