经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 树莓派 » 查看文章
树莓派Opencv张正友棋盘标定法
来源:cnblogs  作者:冲破天际  时间:2019/3/26 8:35:19  对本文有异议

make、Makefile

  1. cc = gcc #最简易的makefile文件,这个可以用来进行文件之间的简易构建和链接,生成我们所需要的执行文件;
  2. prom = calc
  3. deps = $(shell find ./ -name "*.h")
  4. src = $(shell find ./ -name "*.c")
  5. obj = $(src:%.c=%.o) #将所有的.c文件替换成.o文件。
  6.  
  7. $(prom): $(obj)
  8. $(cc) -o $(prom) $(obj)
  9.  
  10. %.o: %.c $(deps)
  11. $(cc) -c $< -o $@
  12.  
  13. clean:
  14. rm -rf $(obj) $(prom)

 

  1. objects = main.o kbd.o command.o display.o/
  2. insert.o search.o files.o utils.o
  3. edit: $(objects)
  4. cc -o edit $(objects)
  5. main.o : defs.h
  6. kbd.o : defs.h command.h
  7. command.o : defs.h command.h
  8. display.o : defs.h buffer.h
  9. insert.o : defs.h buffer.h
  10. search.o : defs.h buffer.h
  11. files.o : defs.h buffer.h command.h
  12. utils.o : defs.h
  13. .PHONY : clean
  14. clean:
  15. rm edit $(objects)
  16. #首先这个objects相当于一个宏定义来的,然后.o文件的后面可以省去.c文件,因为在makefile执行时,它是自动寻找依赖项,所以它会自动添加.c文件到.o的后面。
  17. #简单版的makefile
  18. objects = main.o kbd.o command.o display.o/
  19. insert.o search.o files.o utils.o
  20. edit: $(objects)
  21. cc -o edit $(objects)
  22. $(objects) : defs.h
  23. kbd.o command.o files.o : command.h
  24. display.o insert.o search.o files.o : buffer.h
  25. .PHONY : clean
  26. clean:
  27. rm edit $(objects)
  28. #整个执行操作是:首先我们是根据文件的存活时间来判定的,首先.edit文件是最总的运行文件,它是最新的,.o文件时其次的执行文件,.c文件时依赖项。我们就是要通过这个makefile进行操作他们之间的关系,.c生成.o这个叫做编译(complie),再把大量的.o合成运行文件这个叫做链接(link)。
  29. #工作方式:GNU的make工作时的运行步骤入下:(想来其他的make也是相似)
  30. #1、读入全部的Makefile。
  31. #2、读入被include的其他Makefile。
  32. #3、初始化文件里的变量。
  33. #4、推导隐晦规则,并分析全部规则。
  34. #5、为全部的目标文件创建依赖关系链。
  35. #6、依据依赖关系,决定哪些目标要又一次生成。
  36. #7、运行生成命令。
  37. #规则的语法:
  38. #targets : prerequisites
  39. # command
  40. #......
  41. #或者是这样:
  42. #targets : prerequisites
  43. # command
  44. #......

CMake、CMakefile

  1. #PROJECT_SOURCE_DIR目录下的Cmakefile文件
  2. #树目录如下图,首先bin是执行文件生成的地方,build是Makefile生成的地方,编写完CMakefile文件之后,就会去build目录下cmake .. make,就会生成文件,doc文件时用来存放文档的,image就是照片的地方,include是头文件,譬如自己编写的头文件main.h之类的,lib就是我们生成链接库的地方,src就是我们的源文件的地方。
  3. #PROJECT_SOURCE_DIR根目录会有一个CMakeLists.txt文件,SRC目录下面也会有一个CMakeLists.txt文件,需要我们自己分别编写;
  4. #这个是再项目根目录下的CMakeLists.txt
  5. #cmake verson
  6. CMAKE_MINIMUM_REQUIRED(VERSION 3.7.2)
  7. #project name
  8. PROJECT(main)
  9. #head file path 头文件目录
  10. #source directory 源文件目录
  11. AUX_SOURCE_DIRECTORY(src DIR_SRCS)
  12. #使用了默认的g++指定编译器
  13. SET(CMAKE_CXX_COMPILER "g++")
  14. #指定编译选项
  15. SET(CMAKE_BUILD_TYPE Debug)
  16. #指定了编译目录
  17. SET(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)
  18. #指定了最总生成执行文件的目录
  19. SET(EXEUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
  20. #制定了生成链接库的目录
  21. SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
  22. #指定了包含的头文件的目录
  23. INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)
  24. #动态链接库或静态链接库的搜索路径,相当于指定gcc的L参数
  25. LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
  26. #添加子目录,这样就可以进入源码文件src目录可以继续构建
  27. ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src)
  28. ###但是遇到了一个问题就是不知道为什么生成的main是再/build/src/里面.
  29. #根目录下的SRC里面的CMakeLists.txt
  30. ADD_EXECUTABLE(main main.cpp)
  31. #增加OPENCV的依赖
  32. FIND_PACKAGE(OpenCV 3.3.1 REQUIRED)
  33. #指定OPENCV的头文件包含
  34. INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
  35. #动态链接到OPENCV的依赖库里面
  36. TARGET_LINK_LIBRARIES(main
  37. ${OpenCV_LIBS}
  38. )
  39. #指定生成的链接的地方
  40. SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
  41. #指定执行文件生成到bin中
  42. #SET(EXECUTABLA_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
  43. #生成静态库
  44. ADD_LIBRARY(static_demo STATIC main.cpp)
  45. SET_TARGET_PROPERTIES(static_demo PROPERTIES OUTPUT_NAME "static")
  46. #生成动态库
  47. ADD_LIBRARY(shared_demo SHARED main.cpp)
  48. SET_TARGET_PROPERTIES(shared_demo PROPERTIES OUTPUT_NAME "shared")


  1.  

 

原文链接:http://www.cnblogs.com/chinwongleung/p/10596571.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号