提问人:user3859872 提问时间:9/18/2014 最后编辑:desertnautuser3859872 更新时间:5/20/2023 访问量:100596
获取 CMake 错误:无法为非项目构建的目标指定链接库
Getting a CMake Error: Cannot specify link libraries for target which is not built by the project
问:
我正在我的代码中实现 CMake,但我收到错误
Cannot specify link libraries for target "Qt5::Widgets" which is not built by the project
以下是 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)
答:
54赞
wRAR
9/18/2014
#1
的第一个参数是目标名称:target_link_libraries
target_link_libraries(eCAD Qt5::Widgets Qt5::Core)
117赞
Murphy
12/21/2016
#2
除了公认的答案之外:一个重要的细节是放在 和 行之后,因此所有链接的组件都是已知的。target_link_libraries
add_executable
find_package
评论
0赞
Lamda
11/1/2017
目标呢?那么如何定义你的目标呢?
1赞
Murphy
11/2/2017
@Lamda 你的问题对我来说没有意义,这个线程不是关于指定目标,而是关于链接到它。如果您遇到特定问题,您应该考虑搜索 SO 并在必要时创建一个新问题。
1赞
Lamda
11/2/2017
我的问题是关于这个评论的,它似乎很受欢迎,但对我来说有点奇怪。链接库时,会将其链接到目标。add_executable将定义目标。那么,您将如何链接到尚未定义的东西呢?..很抱歉提出了一个旧话题(只是想学习一些新东西......
0赞
Murphy
11/2/2017
在上下文中阅读所有内容,首先是问题,然后是 wRAR 的答案,然后是我的答案。他们正好解决了这个问题。
0赞
Lamda
11/2/2017
哦。。不好意思。。我似乎误读了你的答案。我最初的想法是你想以另一种方式做(先链接后add_executable),因此我最初的困惑,但你写的完全相反,这更有意义。
-4赞
jingjiang
7/26/2019
#3
设置前设置you_lib_name
target_link_libraries
set(you_lib_name libname)
target_link_libraries(you_lib_name Qt5::Widgets Qt5::Core)
评论
1赞
Tsyvarev
5/7/2020
你的意图或代码是错误的。 command 定义变量,但需要目标。在 CMake 中,变量和目标是完全不相关的东西。set
target_link_libraries
12赞
Tsyvarev
9/13/2019
#4
另外,不要将目标名称与项目名称混淆:
- 命令指定项目名称,但
project
- 目标是使用 或 创建的目标。
add_executable
add_library
add_custom_target
错误消息与目标有关。
评论