cmake 注意事项
1. add_subdirectory()调用
CMake将在每次add_subdirectory()调用时创建一个新的变量作用域,因此这个参数最好的用法是放在cmaklists的最后使用,这样的话创建的新的变量的作用范围与内存的变化就不会影响到后面的变量的使用。
查看并打印在cmake里面定义的宏在,程序中是否起到该有的作用。
#define PRINT_MACRO_HELPER(x) #x
#define PRINT_MACRO(x) #x"="PRINT_MACRO_HELPER(x) #pragma message(PRINT_MACRO(SVO_LOOP_CLOSING))
#pragma message(PRINT_MACRO(SVO_GLOBAL_MAP))
#pragma message(PRINT_MACRO(SVO_USE_OPENGV))
2. cmake编译错误"recompile with -fPIC"
现这个问题原因:
使用cmake首先编译了一个静态库,这个静态库链接其他动态库会出现如下错误:
relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
原因是因为在生成静态库的时候没有加-fPIC选项
问题解决就是在生成静态库的时候修改CMakelist加上-fPIC选项即可
第一种
add_compile_options(-fPIC)
第二种
set(CMAKE_C_FLAGS“$ {CMAKE_C_FLAGS} -fPIC”)
set(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -fPIC”)
参考
学习笔记:relocation R_X86_64_32 against `.rodata‘ can not be used when making a shared object
cmake 注意事项相关推荐
- ESP32实验-自建web服务器配网01
目标 通过esp32自建web服务器实现配网.具体来说: 1.esp32上电,手机/电脑/平板连上esp32的wifi. 2.用浏览器访问esp32的网址esp32默认是192.168.4.1 3.在 ...
- 点云全局配准复现——Super4pcs实现
点云全局配准复现--Super4pcs实现 代码实现 demo演示 项目地址 复现流程 1.下载源码 2.cmake 3.运行build文件夹下sln文件,生成头文件与lib文件 4. 配置文件 5. ...
- 【Eigen】Eigen库基础语法
这里是Eigen库的一些基础语法,摘自<视觉SLAM十四讲>,修改了书中代码的一些bug,部分地方添加了一些自己的理解. 头文件相关 #include <Eigen/Core> ...
- CMake结合Visual Studio中开发Qt应用程序注意事项
Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...
- AS使用NDK Cmake方式依赖第三方库注意事项
AS2.2以后支持Cmake了,以前的Android.mk的方式可以告别了,官方教程 CMakeLists.txt文件的书写 引入第三方库使用add_library()需要指定是SHARED-> ...
- 2019-11-25 编写cmake 脚本注意事项
message(FATAL_ERROR "NO ASSEMBLER! Must install nasm or yasm") CMake 中的 YASM 支持 https://de ...
- ROS2 msg和srv CMake编写注意事项
ROS2使用msg和srv可以参考官网: 工程文件cpp所包含的头文件,其中 cpp_pubsub_self/msg/test.hpp 为msg消息消息生成的头文件,具体的可以参考官网 注意事项: 在 ...
- windows下使用cmake编译zlib与libpng libjpeg 留此备份
win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/, 选择最新版本的windows版本压缩包,进行下载. jpeg ...
- linux cmake编译源码,linux安装mysql(源码)以及cmake编译
说明:mysql 5.5开始必须用cmake编译 系统环境archlinux,mysql版本5.5.27,cmake版本2.2.8 安装: (1).安装cmake.cmake是一款跨平台的编译工具 [ ...
最新文章
- 在 CUDA C/C++ kernel中使用内存
- Memcached原理分析
- 大学计算机组装与维修考试题,【校选修】计算机组装与维修 考试题
- 去培训机构参加IT培训值不值
- 基于pip的安装lxml库报错解决方案
- c语言上机填空改错试题,2013年计算机二级C语言上机试题六十二及答案
- android中的MotionEvent 及其它事件处理
- 输入关键字生成对联_输入真实名字自动生成网名,名字对联自动生成
- H3C Comware的作用
- CFA 2020 notes的PDF版本,热乎乎的百度网盘分享
- matlab抛物柱面 y 2=2x,求曲面z=根号(x2+y2)被柱面z2=2x割下部分的面积
- PPT转换PDF后转成图片
- C#方法讲解——飞行棋画地图
- AUTOCAD——偏移命令、移动命令
- project Structure中的Artifacts是什么
- HTTP协议-Cookie和Session详解
- 煮咖啡的动态页面演示动画
- moba寻路_GitHub - ylmbtm/MoBaDemo: 用Unity做的一个类Moba游戏Demo
- 平台级 SAAS 架构的基础:统一身份管理系统
- 【VUE】【Echarts】绘制图表组件
热门文章
- php-cgi 重启,自动监测和重启 FastCGI 服务
- 日常刷python总结
- 叛乱联机服务器未响应,叛乱沙漠风暴怎么开服 叛乱沙漠风暴开服操作指南详解 安装准备-游侠网...
- c语言 狸抓兔子,捕捉猫狸的方法-
抓野猫的最好方法
- linux 多目录makefile,royalchen
- C++:随笔4--对象
- 和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯
- 读后感与机翻《整体的三维场景解析和重建从单一的RGB图像》
- pyqt5 视频播放器
- android tombstone发生过程,Android Tombstone 分析