linux 下使用CMake编译程序
来源:互联网 发布:矩阵式led大灯有必要吗 编辑:程序博客网 时间:2024/05/17 22:18
一、基本流程
1、编写CMake配置文件CMakeList.txt;
2、执行cmake PATH ,其中PATH为CMakeList.txt所在的目录;
3、make.
二、相关语法
1、CMakeList.txt由命令、注释和空格组成。其中命令不区分大小写,使用‘#’进行注释,命令由命令名称、小括号和参数组成,多个参数间使用空格进行隔开;
2、cmake_minimum_required(version 3.1.0):指定运行CMakeList所需的CMake的最低版本为3.1.0;
3、project(Test):指定项目名称为 Test;
4、aux_source_directory(. src):查找当前目录下的所有源文件,将文件名保存到src;
5、add_subdirectory(sub):包含子目录 sub。在编译时先编译子目录下的CMakeLists.txt和源码;
6、include_directories(${xxx}):包含目录,指定头文件的搜索路径;
7、link_directories(${xxx}):包含库目录,指定外部动态或静态链接库的搜索路径;
8、 add_definitions(xxx):指定编译参数,如(-std=c++11);
9、target_link_libraries:指明编译程序所需的链接库;
10、add_executable(Test ${src}):将src包含的源文件编译生成可执行文件 Test;
11、add_library(Test STATIC /SHARED ${src}):将src所包含的源文件编译成静态/动态链接库;
12、find_package(name):调用预定义在 CMAKE_MODULE_PATH 下的 Find< name >.cmake 模块;
13、message(“xxx”):打印消息;
14、PROJECT_SOURCE_DIR:cmake预定义变量,表示工程的根目录;
15、set(src ${PROJECT_SOURCE_DIR}/src/test.cpp):自定义变量 src为对应目录下的文件test.cpp。
还有很多命令,目前只用到了这么多,后续用到再进行记录。
三、一个例子
cmake_minimum_required(VERSION 3.9.0)project(Test)add_definitions(-std=c++11)# use opencvfind_package(OpenCV)if(NOT OpenCV_FOUND) message(WARNING "OpenCV not found!")else() include_directories(${OpenCV_INCLUDE_DIRS})endif()# headersinclude_directories(${PROJECT_SOURCE_DIR}/include)set(SRC ${PROJECT_SOURCE_DIR}/src/test.cpp)#lib linklink_directories(${PROJECT_SOURCE_DIR}/lib)add_executable(Test ${SRC})target_link_libraries(Test ${OpenCV_LIBS})
这是一个调用opencv进行人脸检测的配置文件,需要将相关文件放在对应目录。在CMakeList.txt目录下执行:
cmake .
进行编译:
接着执行: make,就会生成对应的可执行文件或链接库。
四、参考资料
在学习Linux下使用cmake编译程序过程中,参考了多位博主写的博文,以下是相关链接:
http://blog.csdn.net/fengbingchun/article/details/46685413
http://www.cnblogs.com/never–more/p/6921837.html
http://www.hahack.com/codes/cmake/
- linux 下使用CMake编译程序
- linux下使用Makefile编译程序入门介绍
- linux下怎样编译程序?
- linux下用CMake、make工具手动编译程序的步骤、方法
- linux 下 安装使用 cmake
- Linux下cmake使用教程
- Linux下CMake使用介绍
- Linux下cmake使用简介
- Linux下CMake使用介绍
- linux环境下同时使用静态库、动态库编译程序
- CMake 简介,在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在linux下使用CMake构建应用程序
- 在linux下使用CMake构建应用程序
- 在linux下使用CMake构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在linux下使用CMake构建应用程序
- 3 递归和分治的思想
- 深入理解javascript原型和闭包(3)——prototype原型
- 安卓onSaveInstanceState和onRestoreInstanceState触发的时机
- fastdfs使用实战(Java实例篇)
- 使用caffe训练faster-rcnn时遇到的问题总结
- linux 下使用CMake编译程序
- List<Object>使用Object的某个属性进行排序(正序,倒序)
- ArrayList源码解析
- 基于深度学习的目标检测
- 百度地图搜索位置
- Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
- 完整java开发中JDBC连接数据库代码和步骤
- Retrieve Taxonomy Term by a custom field
- 《Drools7.0.0.Final规则引擎教程》第4章 Function函数