web-dev-qa-db-fra.com

Obtenir une erreur CMake: impossible de spécifier des bibliothèques de liens pour la cible qui n'est pas créée par le projet

J'implémente CMake dans mon code mais j'obtiens l'erreur

Msgstr "Impossible de spécifier des bibliothèques de liens pour la cible" Qt5 :: Widgets "qui n'est pas construite par le projet".

Voici le contenu du 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) 
24
user3859872

Le premier argument de target_link_libraries est le nom cible:

target_link_libraries(eCAD Qt5::Widgets Qt5::Core) 
20
wRAR

En plus de la réponse acceptée: Un détail important est de placer target_link_librariesaprès le add_executableetfind_package lignes, donc tous les composants liés sont connus.

42
Murphy

Ne confondez pas non plus le nom cible avec le nom projet:

  • une commande project spécifie un projet nom, mais
  • un cible est celui créé avec add_executable, add_library ou add_custom_target.

Le message d'erreur concerne le cible.

0
Tsyvarev