摘要:经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。 这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动把头文件和动态链接文件配置好。比如说,在Linux下面工程依赖了OpenCV,只需要下面几行就可以完全配置好: add_exe
阅读全文
随笔分类 - cmake/autotool
摘要:find_package find_package用于加载第三方库,可以将需要的部分指定为组件,例如使用包 nodelet:find_package(catkin REQUIRED COMPONENTS nodelet)。例如,使用 Boost 时加载线程组件: 1 find_package(Boo
阅读全文
摘要:1. 指令说明 target_include_directories():指定目标包含的头文件路径。官方文档 target_link_libraries():指定目标链接的库。官方文档 target_compile_options():指定目标的编译选项。官方文档 目标 由 add_library(
阅读全文
摘要:交叉编译指的在一个平台上生成另一个平台上的可执行代码。很多时候,开发的代码可能并不只是在开发主机的平台上执行,比如在Windows下开发的程序,希望能够在Linux、或者MacOS下执行;或者有时候目标平台根本就没有操作系统,没有对应的编译器,所以必然需要进行交叉编译。 交叉编译笔者在工作中经常会遇
阅读全文
摘要:一、引言 很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。 二、CM
阅读全文
摘要:CMAKE命令使用时需要与CMakeLists.txt在不同的目录下,一般是在CMakeList.txt文档所在的目录下创建一个build文件夹,然后cd到build文件夹,执行cmake ..,此时会根据CMakeLists.txt将需要的配置文件生成到build目录下,然后在build目录下执行
阅读全文
摘要:1. 原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库。 交叉编译,是
阅读全文
摘要:CMake中的option用于控制编译流程,相当于C语言中的宏条件编译。 基本格式 options基本格式如下: option(<variable> "<help_text>" [value]) variable:定义选项名称 help_text:说明选项的含义 value:定义选项默认状态,一般是
阅读全文
摘要:本文是“轻松搞定CMake”系列博客中的一篇,该篇文章的主要目的是详细讲解一下CMake中搜包命令find_package的使用和原理。其他更多文章请参考: “轻松搞定CMake”系列博客概述 文章目录 1、find_packakge命令基本介绍 2、一个使用find_package命令的例子 2.
阅读全文
摘要:刚刚接触Cmake的时候,对于find_package的用法以及背后的原理经常一头雾水,官方文档比较晦涩难懂,网上的博客也都讲解的比较片面。这里通过实战代码案例进行一下详细的总结讲解。帮助自己加深理解的同时,也希望帮到更多的初学者。 此处所有代码均可在我的github项目中找到,欢迎star。后续内
阅读全文
摘要:Motivation 经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。 这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动把头文件和动态链接文件配置好。比如说,在Linux下面工程依赖了OpenCV,只需要下面几行就可以完全配
阅读全文
摘要:命令格式 add_subdirectory (source_dir [binary_dir] [EXCLUDE_FROM_ALL])添加一个子目录并构建该子目录。 命令解析 source_dir必选参数。该参数指定一个子目录,子目录下应该包含CMakeLists.txt文件和代码文件。子目录可以是相
阅读全文
摘要:命令格式 add_subdirectory (source_dir [binary_dir] [EXCLUDE_FROM_ALL])添加一个子目录并构建该子目录。 命令解析 source_dir必选参数。该参数指定一个子目录,子目录下应该包含CMakeLists.txt文件和代码文件。子目录可以是相
阅读全文
摘要:0 综述 我觉的Cmake比较核心的一些东西就是 怎么去组织一个项目的编译框架 最终输出目标有哪些(可执行程序,动态库,静态库等等) 怎么为指定的输出目标指定编译参数(需要哪些源文件,需要哪些编译参数) 怎么为指定的输出目标指定链接参数(需要哪些外部库,需要哪些链接参数) 如果存在多个独立输出目标是
阅读全文
摘要:cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command cmake的四个命令:add_compile_options、add_definitions、target_compile_
阅读全文
摘要:1. 说明 在实际的项目平台中可能安装有多个版本的编译器,同时由于不同的功能可能会需要设置不同的编译参数,这篇笔记就记录如何选择指定的编译器和配置参数。 2. 选择编译器 2.1 初始状态 我使用的开发平台默认安装的gcc5.5.0,后面又安装了clang3.8.0,在默认path下C编译器会使用g
阅读全文
摘要:在CMake中if语法比较简单,if后面括号中的参数随着CMake版本的推进,在else和endif中也可以不用写了。 if(address) else() endif() 对于if语法,比较常用的就是字符串比较了,这里个人简单用到过两种,一种是这个变量有没有定义过。有两种写法可以验证 if(DEF
阅读全文
摘要:CMake option 使用场景 : 编译脚本传递参数 -> CMake脚本接收option -> 源代码宏 编译脚本传入参数传入一个cmake option TEST_DEBUG #!/bin/sh cmake -DTEST_DEBUG=ON . cmake --build . CMake脚本接
阅读全文
摘要:CMake option 使用场景 : 编译脚本传递参数 -> CMake脚本接收option -> 源代码宏 编译脚本传入参数传入一个cmake option TEST_DEBUG #!/bin/sh cmake -DTEST_DEBUG=ON . cmake --build . CMake脚本接
阅读全文
摘要:合并openjpeg/soxr/vidstab/snappy等多个cmake库时,为了解决下述问题: relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with
阅读全文