树莓派opencv张正友棋盘标定法-尊龙凯时
cc = gcc #最简易的makefile文件,这个可以用来进行文件之间的简易构建和链接,生成我们所需要的执行文件;
prom = calc
deps = $(shell find ./ -name "*.h")
src = $(shell find ./ -name "*.c")
obj = $(src:%.c=%.o) #将所有的.c文件替换成.o文件。
$(prom): $(obj)
$(cc) -o $(prom) $(obj)
%.o: %.c $(deps)
$(cc) -c $< -o $@
clean:
rm -rf $(obj) $(prom)
objects = main.o kbd.o command.o display.o/ insert.o search.o files.o utils.o edit: $(objects) cc -o edit $(objects) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h .phony : clean clean: rm edit $(objects) #首先这个objects相当于一个宏定义来的,然后.o文件的后面可以省去.c文件,因为在makefile执行时,它是自动寻找依赖项,所以它会自动添加.c文件到.o的后面。 #简单版的makefile objects = main.o kbd.o command.o display.o/ insert.o search.o files.o utils.o edit: $(objects) cc -o edit $(objects) $(objects) : defs.h kbd.o command.o files.o : command.h display.o insert.o search.o files.o : buffer.h .phony : clean clean: rm edit $(objects) #整个执行操作是:首先我们是根据文件的存活时间来判定的,首先.edit文件是最总的运行文件,它是最新的,.o文件时其次的执行文件,.c文件时依赖项。我们就是要通过这个makefile进行操作他们之间的关系,.c生成.o这个叫做编译(complie),再把大量的.o合成运行文件这个叫做链接(link)。 #工作方式:gnu的make工作时的运行步骤入下:(想来其他的make也是相似) #1、读入全部的makefile。 #2、读入被include的其他makefile。 #3、初始化文件里的变量。 #4、推导隐晦规则,并分析全部规则。 #5、为全部的目标文件创建依赖关系链。 #6、依据依赖关系,决定哪些目标要又一次生成。 #7、运行生成命令。 #规则的语法: #targets : prerequisites # command #...... #或者是这样: #targets : prerequisites # command #......
#project_source_dir目录下的cmakefile文件 #树目录如下图,首先bin是执行文件生成的地方,build是makefile生成的地方,编写完cmakefile文件之后,就会去build目录下cmake .. make,就会生成文件,doc文件时用来存放文档的,image就是照片的地方,include是头文件,譬如自己编写的头文件main.h之类的,lib就是我们生成链接库的地方,src就是我们的源文件的地方。 #project_source_dir根目录会有一个cmakelists.txt文件,src目录下面也会有一个cmakelists.txt文件,需要我们自己分别编写; #这个是再项目根目录下的cmakelists.txt #cmake verson cmake_minimum_required(version 3.7.2) #project name project(main) #head file path 头文件目录 #source directory 源文件目录 aux_source_directory(src dir_srcs) #使用了默认的g 指定编译器 set(cmake_cxx_compiler "g ") #指定编译选项 set(cmake_build_type debug) #指定了编译目录 set(project_binary_dir ${project_source_dir}/build) #指定了最总生成执行文件的目录 set(exeutable_output_path ${project_source_dir}/bin) #制定了生成链接库的目录 set(library_output_path ${project_source_dir}/lib) #指定了包含的头文件的目录 include_directories( ${project_source_dir}/include) #动态链接库或静态链接库的搜索路径,相当于指定gcc的l参数 link_directories(${project_source_dir}/lib) #添加子目录,这样就可以进入源码文件src目录可以继续构建 add_subdirectory(${project_source_dir}/src) ###但是遇到了一个问题就是不知道为什么生成的main是再/build/src/里面. #根目录下的src里面的cmakelists.txt add_executable(main main.cpp) #增加opencv的依赖 find_package(opencv 3.3.1 required) #指定opencv的头文件包含 include_directories(${opencv_include_dirs}) #动态链接到opencv的依赖库里面 target_link_libraries(main ${opencv_libs} ) #指定生成的链接的地方 set(library_output_path ${project_source_dir}/lib) #指定执行文件生成到bin中 #set(executabla_output_path ${project_source_dir}/bin) #生成静态库 add_library(static_demo static main.cpp) set_target_properties(static_demo properties output_name "static") #生成动态库 add_library(shared_demo shared main.cpp) set_target_properties(shared_demo properties output_name "shared")

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