cmake 解决错误:Cannot specify link libraries for target

2023-11-18

最近研究cmake来配置Qt的编译方法,写好了CMakeLists.txt通过编译后却无法链接成功;由于用的是mac osx,还以为是不同系统链接库出了问题;检查他给出的路径(变量${QT_LIBRARIES}的内容)为:

/Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtGui.framework/Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtCore.framework

手动设置为静态库的路径:

TARGET_LINK_LIBRARIES(FilterSamesetBasic /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtGui.la /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtCore.la )

还是链接失败,错误如下:

Linking CXX executable FilterSamesetBasic ld: warning: ld: warning: ignoring file /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtGui.la, file was built for unsupported file format ( 0x23 0x20 0x51 0x74 0x47 0x75 0x69 0x2e 0x6c 0x61 0x20 0x2d 0x20 0x61 0x20 0x6c ) which is not the architecture being linked (x86_64): /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtGui.laignoring file /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtCore.la, file was built for unsupported file format ( 0x23 0x20 0x51 0x74 0x43 0x6f 0x72 0x65 0x2e 0x6c 0x61 0x20 0x2d 0x20 0x61 0x20 ) which is not the architecture being linked (x86_64): /Volumes/Design/LocalSoft/Qt/Desktop/Qt/4.8.1/gcc/lib/QtCore.la

看来这个静态库是不合适的,还是仔细琢磨出错的那句话:

CMake Error at src/CMakeLists.txt:19 (TARGET_LINK_LIBRARIES):
  Cannot specify link libraries for target "FilterSamesetBasic" which is not
  built by this project.


还是疯狂查资料,最后在 http://answers.ros.org/question/10890/cannot-specify-link-libraries-for-target/ 上,看到高手的回复,弄懂了问题所在:

In principle your file should work. The only thing is that you need the target (rosbuild_add_executable) before the target_link_libraries.

也就是说 要将 ADD_EXECUTABLE的声明放到设置库文件的TARGET_LINK_LIBRARIES之前,修改后终于链接成功了,可以使用啦~~,(新手不懂得很多啊!!!)附上核心内容和注视,以作纪念:

FIND_PACKAGE(Qt4 REQUIRED) ADD_DEFINITIONS(${QT_DEFINITIONS}) INCLUDE(${QT_USE_FILE}) # 下面的是路径测试 #MESSAGE(STATUS "The BINARY dir is: " ${PROJECT_BINARY_DIR}) #MESSAGE(STATUS "The SOURCE dir is: " ${PROJECT_SOURCE_DIR}) # 设置输出程序的路径,为编译目录下的bin目录 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) SET(FilterSamesetBasic_SOURCES main.cpp mainwidget.cpp) SET(FilterSamesetBasic_HEADERS mainwidget.h) SET(FilterSamesetBasic_FORMS ../ui/mainwidget.ui) QT4_WRAP_CPP(FilterSamesetBasic_HEADERS_MOC ${FilterSamesetBasic_HEADERS}) QT4_WRAP_UI(FilterSamesetBasic_FORMS_HEADERS ${FilterSamesetBasic_FORMS}) # 添加编译路径到包含的路径中,否则部分编译出的头文件找不到 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) ADD_EXECUTABLE(FilterSamesetBasic ${FilterSamesetBasic_SOURCES} ${FilterSamesetBasic_FORMS_HEADERS} ${FilterSamesetBasic_HEADERS_MOC} ) # 添加共享库路,注意该配置必须添加在设置应用程序后,即ADD_EXECUTABLE后面 IF(LINUX) MESSAGE(STATUS "Found LINUX OS") TARGET_LINK_LIBRARIES(FilterSamesetBasic ${QT_LIBRARIES}) ELSEIF(APPLE) MESSAGE(STATUS "Found APPLE OS") TARGET_LINK_LIBRARIES(FilterSamesetBasic ${QT_LIBRARIES}) ENDIF() #LINK_DIRECTORIES(${QT_LIBRARIES})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmake 解决错误:Cannot specify link libraries for target 的相关文章

随机推荐

  • ubuntu 防火墙简单设置攻略

    ufw是一个主机端的iptables类防火墙配置工具 比较容易上手 一般桌面应用使用ufw已经可以满足要求了 安装方法 sudo apt get install ufw 当然 这是有图形界面的 比较简陋 在新立得里搜索gufw试试 使用方法
  • Python提取pdf所有页面为图片(PyPDF2 + PhthonMagick + GS方法)

    主要参考 https blog csdn net sweeper freedoman article details 53000145 以下是在Python3 6 64位环境下 Anaconda3安装的 操作 1 下载PyPDF2源代码 再
  • Android与Unity3D交互。启动UnityActivity出现黑屏、第一次要加载、第二次则秒开

    Android工程 新建两个类 MyUnityPlayerActivity MyUnityPlay import android app Activity import android content res Resources impor
  • 1034 Head of a Gang (30 分)

    题目 题目链接 题解 并查集 注意坑点 帮派的人数必须大于2 代码 include
  • 网络安全工程师是做什么的?

    顾名思义 网络安全工程师主要是维护网络的安全和稳定 对网页篡改 计算机病毒 系统非法入侵 数据泄密 网站欺骗 服务瘫痪 漏洞非法利用等信息安全事件进行维护 从社会角度来看 网络安全工程师在维护个人信息安全和解开黑客攻击上发挥着巨大的作用 是
  • 深度学习之卷积神经网络(9)经典卷积网络

    深度学习之卷积神经网络 9 经典卷积网络 1 AlexNet 2 VGG系列 3 GoogleLeNet 自2012年AlexNet 1 的提出以来 各种各样的深度卷积神经网络模型相继被提出 其中比较有代表性的有VGG系列 2 Google
  • 把手机当成摄像头_爱思助手和沙漏验机到底靠不靠谱?五年二手机从业者告诉你...

    很多准备购买二手手机听得最多的应该就是 爱思全绿 沙漏全绿 的商家宣传了 其实很多人都不知道 爱思 和 沙漏 是什么 更谈不上靠不靠谱 今天小编以专业的角度给大家分析一下爱思助手和沙漏验机到底靠不靠谱 自从爱思助手推出验机报告之后 也算改变
  • idea代码上传git服务器详细步骤,带图详细讲解教程

    第一步 在git上创建仓库 获得仓库地址 添加前在项目文件夹中没有 git 文件夹 第二步 通过idea添加将代码添加到本地仓库 点击后跳转到下面页面 找到项目路径 点击OK 此时在项目文件夹中会有一个 git文件夹 说明本地仓库创建成功
  • Win7-64bit下MapX的安装和使用

    这两天碰到个VC MapX做飞机航迹回放与显示的单子 虽然没有接下来 今天下午还是学习了一下MapX的配置 在这留下一个记号 以备日后再用 MapX在CDSN上完整的安装包链接 http download csdn net detail f
  • Openfire 中SASL的认证方式之:PLAIN,DIGEST-MD5,anonymous

    SASL 的认证方式包括 1 PLAIN plain是最简单的机制 但同时也是最危险的机制 因为身份证书 登录名称与密码 是以base64字符串格式通过网络 没有任何加密保护措施 因此 使用plain机制时 你可能会想要结合tls 2 DI
  • dedecms怎样调用指定id文章?

    前面我们聊了帝国cms如何调用指定id的文章到首页 作为同行的织梦cms应该也是可以实现的吧 那么 dedecms怎样调用指定id文章呢 使用idlist直接调用指定的ID这样的方法是比较好的 官方给与的说明是 idlist 提取特定文档
  • PDB符号文件与Windows下利用Windbg 分析dump

    PDB简介 跟踪提供程序 例如应用程序或驱动程序 的程序数据库 PDB 符号文件包含用于对跟踪消息设置格式的指令 以便可以按照用户可读的形式显示这些消息 跟踪消息格式设置指令属于跟踪提供程序源代码的一部分 WPP 预处理器从代码中提取这些指
  • 【Spring应用】SPEL表达式使用

    Spring框架中的SpEL Spring Expression Language Spring表达式语言 是一种基于字符串的表达式语言 用于支持在运行时动态地计算表达式的值 它可以在Spring的多个模块中使用 如Spring MVC S
  • 2023年4月计划(ue视频教程)

    虽然不跳槽 但是也面试了两家UE小公司 看看差距 一家是家装的 两个面试官问不出什么问题来 出价试用期1万五 转正后看表现 我 还不如自己学着玩 另一家是做模拟训练的 多人游戏把我问倒了 确实没学过 说明局域网的还是比较重要的 所以还要抓紧
  • Git 中的.gitignore文件的作用及配置

    文章目录 前言 一 gitignore文件是什么 二 如何配置 gitignore文件 三 gitignore文件在使用中的问题 总结 前言 在使用Git的时候 有时候会在Git的工作区目录中产生一个 gitignore文件 该篇来简单介绍
  • 微信开放平台的第三方平台微信开放平台帐号管理接口开发的两个错误

    陈永鹏的微博 陈永鹏的csdn博客地址 http blog csdn net chenyoper 陈永鹏的博客园地址 http www cnblogs com Yoperchen 开发微信开放平台下的第三方微信开放平台 好绕口吧 调用创建开
  • 远程桌面功能:从本机访问虚拟机桌面

    通过windows的远程桌面功能 实现从本机访问虚拟机桌面 一 前言 在学习本篇文章技术的同时要做好以下准备工作 1 安装VMware虚拟机 VMware12或者VMware14 2 在虚拟机上安装Windows操作系统 Windows7或
  • 【Kubernetes存储篇】持久化存储PV、PVC详解

    文章目录 一 PV PVC持久化存储理论 1 PV PVC是什么 2 PV的供应方式 3 PV PVC的回收策略 二 案例 PV PVC持久化存储案例演示 1 搭建NFS服务端 2 创建PV 并使用NFS共享存储 3 创建PVC 并和PV绑
  • 直接内存(堆外内存)

    直接内存 堆外内存 直接内存 堆外内存 指的是Java应用程序通过直接方式从操作系统中申请内存 这个差别与之前的堆 栈 方法区 那些内存都是经过了虚拟化 所以严格来说 这里是指直接内存 直接内存有哪些 使用了 Java 的 Unsafe 类
  • cmake 解决错误:Cannot specify link libraries for target

    最近研究cmake来配置Qt的编译方法 写好了CMakeLists txt通过编译后却无法链接成功 由于用的是mac osx 还以为是不同系统链接库出了问题 检查他给出的路径 变量 QT LIBRARIES 的内容 为 Volumes De