获取CMake错误:无法为项目未生成的目标指定链接库
我在代码中实现了CMake,但是我得到了错误 无法为不是由项目生成的目标“Qt5::Widgets”指定链接库 以下是CMakeLists.txt的内容:获取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
#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中,变量和目标是完全不相关的。