红联Linux门户
Linux帮助

使用CMake将一个源文件编译成一个可执行的二进制文件

发布时间:2016-10-12 10:56:40来源:linux网站作者:永往直前的流浪人
1.首先,在OpenCV的安装目录下新建一个目录,假设目录名为code,于是code就是代码的根目录,并进入code目录中。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build$ mkdir code
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build$ cd code
注:/home/zhuquan/opencv/build是opencv的安装目录。
 
2.其次,在code目录中新建几个子目录,分别命名为src,include,lib,bin。
其中,src用来存放源文件;
include用来存放头文件;
lib用来存放编译好的库文件;
bin用来存放编译好的可执行的二进制文件。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code$ mkdir src include lib bin
注:为了把code的目录结构告诉CMake,所以我们还需要在code目录中建立一个CMake编译文件,命名为CMakeLists.txt。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code$ touch CMakeLists.txt
并在其中写入如下内容:
其中“写入”的方法为zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code$ gedit CMakeLists.txt
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定版本
PROJECT( code ) #设定工程名
SET( CMAKE_CXX_COMPILER "g++") #设定编译器
#设定可执行二进制文件的目录
SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#设定存放编译出来的库文件的目录
SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#并且把该目录设为连接目录
LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib)
#设定头文件目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)
#增加子目录,这样进入源代码src目录可以继续构建
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
 
3.接下来,实现怎么样使用CMake将一个源文件编译成一个可执行的二进制文件
3.1.首先,在src子目录下新建一个名字为main.cpp的源文件
进入src子目录:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code$ cd src
新建一个名字为main.cpp的源文件:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$ touch main.cpp
并在main.cpp中写入如下内容:(“写入”的操作如上)
#include <iostream>
int main(int argc, char**argv)
{
std::cout<<"Hello SLAM!"<<std::endl;
return 0;
}
为了将这个源文件编译成一个可执行的二进制文件,我们还需在src子目录下新建一个CMake编译文件,名字为CMakeLists.txt
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$ touch CMakeLists.txt
并写入如下内容:("写入"操作如上)
# 增加一个可执行的二进制
ADD_EXECUTABLE( main main.cpp )
 
3.2.这样cmake就会把这个main.cpp编译成一个名字为main的可执行的二进制文件了
首先转入代码根目录下,即在终端输入
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$ cd ..
结果为
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$
注:cd和..之间有个空格。
接着在终端依次输入:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$ mkdir build
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$ cd build
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$  cmake ..
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/src$  make
编译通过的话就会在bin子目录下生成一个名字为main的可执行的二进制文件了。
如果你执行这个名字为main的二进制文件,就会输出 Hello SLAM!啦!
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/build$ cd ..
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code$ cd bin
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/opencv/build/code/bin$ ./main
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24958.html