欢迎光临散文网 会员登陆 & 注册

从零开始详细介绍CMake

2022-04-25 20:25 作者:Kaiser小弟  | 我要投稿

第一讲:

cmake是什么:

多人使用不同的编程语言(相同),开发同一个项目,最终输出可知性文件/共享库-》cmake

操作通过cmakelist完成的。

为了处理大型c/cpp/java项目准备。

第二讲:cmake helloeworld编译

  1. 写一个helloworld文件
  2. 写一个cmakelist
  3. 编译
  4. cmake .
  5. make
  6. 生成可执行文件

第三讲:cmakelist语法介绍

  1. project关键字:工程名字和支持语言
  2. project (HELLO CXX/JAVA)
  3. project_binary_dir
  4. project_source_dir
  5. set关键字
  6. 显示指定变量/设置变量
  7. message
  8. 终端输出用户自定义信息
  9. send_error
  10. status
  11. fatal_error
  12. add_executable
  13. 生成可知性文件
  14. add(hello $(SRC_LIST})
  15. 工程名字和可执行文件没有关系
  16. 语法基本原则
  17. ${}读取变量
  18. 参数之间通过分好或者空格分割
  19. 指令部分大小写,参数和变量区分大小写
  20. main.cpp可加“”可不加“”
  21. ADD_EXE中文件名可以不加后缀

第四讲:内部构建和外部构建

  1. 内部构建产生临时文件;外部构建放在build里面
  2. 建立build dir
  3. 进入build
  4. cmake ..
  5. binary_dir /build; source_dir: 原始文件夹
  6. ;build:make

第五讲:helloworld看起来like工程

  1. 添加src目录,存放源代码;doc文档;runhello.sh; 目标文件bin;
  2. 目标文件放入bin
  3. 每一个目录下买年都要有cmakelist
  4. src touch cmakelist
  5. 先写工程目录的cmakelist
  6. PROJECT(HELLO)
  7. 关联起来:
  8. ADD——SUBDIR(src bin)(生成文件放入bin)
  9. 写src cmakelist
  10. add_executable(hello main.cpp)
  11. 更改二进制到bin
  12. camke ..(build)
  13. make
  14. 生成hello,生成bin(build),可知性文件在bin
  15. add_subdir:告诉smkae还有一个目录,

第六讲:安装helloworld

  1. make install
  2. make install 指定目录
  3. 二进制,动态库,静态库。。。
  4. 建立copyright
  5. 建立 doc
  6. doc:hello.txt
  7. 工程目录:readme
  8. 建立runhello.sh
  9. 安装文件copuriht readme
  10. 编译工程;cmakelist
  11. install(files copyright readme destination path) (最前面调用cmake install prefix, usr/local/share/doc/cmake/
  12. 安装脚本
  13. programs:非目标的可执行程序的安装
  14. install(programs runhello.sh destination bin) (usr/local/bin)
  15. 安装目录
  16. install(directory doc/(目录下的内容) destination share/loc/cmake)
  17. cd build; amke ..
  18. make; ./bin/hello!
  19. 安装:make install

第七讲:静态库和动态库的构建

  1. 静态库:.a, .lib;动态库:.so,.dll
  2. 静态库:直接整合到程序,动态库:编译时不放到程序中,运行时加载
  3. 任务1. 建立静态库和动态库
  4. 任务2:安装头文件和共享库
  5. 建立build;建立cmakelist;建立lib;进入lib
  6. 建立cmakelist;建立hello.cpp; touch hello.h;
  7. 项目cmakelist:
  8. project (hello)
  9. add_subdir(lib bin)
  10. cd lib;
  11. cmakelist:
  12. set (libhello_src hello.cpp)
  13. add_lib(hello shared/static ${libhello_src}) (没有hello.h,共享库名字libhello.so)
  14. cd build; cmake.. make; cd bin; -> libhello.so

第八讲:同时构建static和dynamic

  1. 名字一样指挥构建动态库,不会静态库(名字不一样可以)
  2. set_target_projecties
  3. 设置输出名字
  4. 安装共享库和头文件
  5. lib有头文件:安装头文件
  6. install (files helloh diest include/hello)
  7. install (targets hello hello_staic libraty(动态库关键字) destination lib archive desitaion lib)(相对路径)
  8. 默认/usr:
  9. cmake -DCMAKE_PREFIX=/usr ..
  10. make
  11. make install

第九讲:如何使用共享库和头文件

  1. mkdir build touch Cmakelist; make drc; cd src
  2. touch cmakelist; cd ..
  3. cd src; vim main.cpp; cd ..
  4. vim CMkalist
  5. project (hello)
  6. add_subdirrector(src bin)
  7. cd src; bim cmakelist
  8. add_executable(hello main.cpp)
  9. cd .. cd build cmake ..; make;
  10. include_directories(/usr/include/hello)(src cmakelist)
  11. link_directories/target_link_libraries

从零开始详细介绍CMake的评论 (共 条)

分享到微博请遵守国家法律