cmake & make入门
1. 为什么需要Makefile然后通过make来构建可执行程序?
make是一个工具,它控制可执行程序和程序源文件中非源码文件的生成,而Makefile就是制定了一系列规则,告诉make如何构建该程序。需要make的原因是当一个project有很多源文件和头文件的时候,程序员编写好Makefile,用户就不需要知道这些文件之间的依赖关系,既可以用一个简单的命令“make”将可执行文件构建完成。
另外,使用make的另一个好处是,当我们只改变了project中某一个或者某几个源文件时,重新编译整个程序效率很低,但是用make进行编译,它仅仅会更新那些直接或者间接依赖这些改变的源码文件的非源码文件。
2. 有人make为什么还要cmake
对于大工程,写makefile非常麻烦,所以就设计cmake读入所有源文件,自动生成makefile, 这就是cmake工具,相应的,就要编写CMakeLists.txt文件,这个文件比makefile易读性更强,也更容易编写。编写完毕后,执行cmake就会产生Makefile, 然后make生成可执行文件。
而且Makefile是在类unix环境下的项目管理工具,对windows下不太友好,cmake是跨平台项目管理工具。
3. 给出个例子编译opencv代码
g++ `pkg-config opencv --cflags` opencv.cpp -o opencv `pkg-config opencv --libs`
./opencv
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(opencv) find_package(OpenCV REQUIRED) add_executable(opencv opencv.cpp) target_link_libraries(opencv ${OpenCV_LIBS})
cmake .
make
./opencv
具体的编写规则见下参考链接
http://liqiang311.com/cpp/make%E4%B8%8Ecmake%E5%AD%A6%E4%B9%A0/