Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting a CMake Error: Cannot specify link libraries for target which is not built by the project

Tags:

cmake

I am implementing CMake in my code but I'm getting the error

"Cannot specify link libraries for target "Qt5::Widgets" which is not built by the project".

Below are the contents of the CMakeLists.txt:

#Specify the version being used aswell as the language
cmake_minimum_required(VERSION 2.6)

#Name your project here
project(eCAD)

#Sends the -std=c++11 flag to the gcc compiler
ADD_DEFINITIONS(-std=c++11)

#This tells CMake to main.cpp and name it eCAD
add_executable(eCAD main.cpp)


#include the subdirectory containing our libs
add_subdirectory (gui)
include_directories(gui)

#include Qt directories
find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Designer)
SET(QT_USE_QTDESIGNER ON)

#link_libraries
target_link_libraries(Qt5::Widgets Qt5::Core) 
like image 598
user3859872 Avatar asked Sep 18 '14 10:09

user3859872


3 Answers

In addition to the accepted answer: An important detail is to place target_link_libraries after the add_executable and find_package lines, so all linked components are known.

like image 65
Murphy Avatar answered Oct 21 '22 06:10

Murphy


The first argument of target_link_libraries is the target name:

target_link_libraries(eCAD Qt5::Widgets Qt5::Core) 
like image 29
wRAR Avatar answered Oct 21 '22 08:10

wRAR


Also, do not confuse target name with the project name:

  • a command project specifies a project name, but
  • a target is the one created with add_executable, add_library or add_custom_target.

The error message is about the target.

like image 7
Tsyvarev Avatar answered Oct 21 '22 08:10

Tsyvarev