Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取CMake错误:无法为项目未生成的目标指定链接库_Cmake - Fatal编程技术网

获取CMake错误:无法为项目未生成的目标指定链接库

获取CMake错误:无法为项目未生成的目标指定链接库,cmake,Cmake,我在代码中实现了CMake,但是我得到了错误 无法为不是由项目生成的目标“Qt5::Widgets”指定链接库 以下是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 com

我在代码中实现了CMake,但是我得到了错误

无法为不是由项目生成的目标“Qt5::Widgets”指定链接库

以下是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) 

target\u link\u libraries
的第一个参数是目标名称:

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

除了公认的答案之外:一个重要的细节是将
目标链接库
放在
添加可执行文件
查找包
行之后,这样所有链接的组件都是已知的。

在设置
目标链接库之前设置
库名

set(you_lib_name libname)
target_link_libraries(you_lib_name Qt5::Widgets Qt5::Core) 

另外,不要将目标名称与项目名称混淆:

  • 命令
    project
    指定项目名称,但
  • 目标是使用
    添加可执行文件
    添加库
    添加自定义目标
    创建的目标

错误消息是关于目标的

目标如何。。。那么你如何定义你的目标呢?@Lamda你的问题对我来说没有意义,这个线程不是关于指定目标,而是关于针对目标进行链接。如果你有一个特定的问题,你应该考虑这样做,并且在必要的时候创建一个新的问题。我的问题是关于这个评论,这个评论似乎很受欢迎,但对我来说有点奇怪。链接库时,将其链接到目标。add_可执行文件将定义目标。那么,您将如何链接到尚未定义的内容呢?。。很抱歉提出了一个老话题(只是想学习一些新的东西…),请结合上下文阅读所有内容,首先是问题,然后是Wrr的答案,然后是我的答案。他们正好解决了这个问题。。很抱歉我似乎误解了你的答案。我最初的想法是你想用另一种方式(先链接,然后添加可执行文件),因此我最初感到困惑,但你写的恰恰相反,这更有意义。你的意图或代码都是错误的
set
命令定义变量,但
target\u link\u库
需要目标。在CMake中,变量和目标是完全不相关的。