使⽤cmake将⼀个源⽂件编译成⼀个可执⾏的⼆进制⽂件cmake是⼀个⼯程构建⼯具,使⽤它可以⾃动地⽣成makefile⽂件,且能够构建编译⽂件,链接库,安装⽂件等。
现构建⼀个使⽤cmake的项⽬或⼯程,假设这个项⽬或⼯程的名字为code。
1.⾸先,新建⼀个⽂件夹,命名为code,于是code就是代码的根⽬录。并进⼊code⽬录中。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:$ mkdir code
zhuquan@zhuquan-HP-Z230-Tower-Workstation:$ cd code
2.其次,在code⽬录中新建⼏个⼦⽬录,分别命名为src,include,lib,bin。
cmake如何使用其中,src⽤来存放源⽂件;
include⽤来存放头⽂件;
lib⽤来存放编译好的库⽂件;
bin⽤来存放编译好的可执⾏的⼆进制⽂件。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code$ mkdir src include lib bin
注:为了把code的⽬录结构告诉cmake,所以我们需要在code⽬录中建⽴⼀个cmake编译⽂件,命名为。
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code$
并在其中写⼊如下内容:
其中“写⼊”的⽅法为zhuquan@zhuquan-HP-Z230-Tower-Workstation:~//code$ gedit/
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定使⽤的cmake的版本
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)
#如果希望进⼊源代码⽂件夹仍可以继续使⽤cmake,则需增加⽂件夹
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
3.接下来,实现怎么样使⽤CMake将⼀个源⽂件编译成⼀个可执⾏的⼆进制⽂件
3.1.⾸先,在src⼦⽬录下新建⼀个名字为main.cpp的源⽂件
进⼊src⼦⽬录:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code$ cd src
新建⼀个名字为main.cpp的源⽂件:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/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编译⽂件,名字为 zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$
并写⼊如下内容:("写⼊"操作如上)
# 增加⼀个可执⾏的⼆进制
ADD_EXECUTABLE( main main.cpp )
3.2 这样cmake就会把这个main.cpp编译成⼀个名字为main的可执⾏的⼆进制⽂件了
⾸先转⼊代码根⽬录下,即在终端输⼊
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$ cd ..
结果为
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$
注:cd和..之间有个空格。
接着在终端依次输⼊:
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$ mkdir build
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$ cd build
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$ cmake ..
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/src$ make
编译通过的话就会在bin⼦⽬录下⽣成⼀个名字为main的可执⾏的⼆进制⽂件了
如果你执⾏这个名字为main的⼆进制⽂件,就会输出 Hello SLAM! 啦!
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/build$ cd ..
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code$ cd bin
zhuquan@zhuquan-HP-Z230-Tower-Workstation:~/code/bin$ ./main
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论