学习使用CMake构建工程

 CMake是编写C/C++常用的文件构建工具,掌握它的编写规则对于理解工程至关重要。本文只是简单的cmake入门,更多详细的内容可以参考网上的资料。这里使用的kdevelop作为开发工具,读者也可以选用vim或者visual studio都可以。具体的kdevelop可以参考此文 kdevelop安装使用运行

创建Hello工程,工程中包含两个文件main.cpp

#include <iostream>

int main(int argc, char **argv) {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
和工程构建文件CMakeLists.txtmain.cpp是很简单的cpp示例,工程文件中add_executable表示使用后面的main.cpp文件,生成hello可执行文件,其余两句话可以不写。

cmake_minimum_required(VERSION 3.7)

project(hello)

add_executable(hello main.cpp)

install(TARGETS hello RUNTIME DESTINATION bin)

在终端中可以新建一个build文件夹,然后按照下面的操作步骤进行。

wang@wang:~/projects/Hello/build$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wang/projects/Hello/build
wang@wang:~/projects/Hello/build$ make
Scanning dependencies of target hello
[ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.o
[100%] Linking CXX executable hello
[100%] Built target hello
wang@wang:~/projects/Hello/build$ ./hello 
Hello, world!
最终可以看到执行成功,最简单的CMakeLists.txt已经写完。

 接下来向工程中增加动态库运行,写一个计算圆面积的代码,把圆的面积计算单独放入一个文件中。新建两个文件circle.h

double circleArea(double r);
只有一句函数申明,然后新建circle.cpp文件,定义圆面积的计算公式

#include "circle.h"

const double PI = 3.14159265358979323846;

double circleArea(double r)
{
  return PI * r * r;
}
main.cpp如下所示

#include <iostream>
#include "circle.h"
int main(int argc, char **argv) {
    double area = circleArea(5);
    std::cout << "The area of a circle of radius 5 is " << area << std::endl;
    return 0;
}
CMakeLists.txt文件,增加了两行代码,add_library表示添加一个动态库,前面的参数表示库名字,后面的参数是源文件。

target_link_libraries是对动态库的链接。

cmake_minimum_required(VERSION 3.7)

project(circlearea)

add_library(circle circle.cpp)

add_executable(circlearea main.cpp)
target_link_libraries(circlearea circle)

install(TARGETS circlearea RUNTIME DESTINATION bin)
运行效果

wang@wang:~/projects/CircleArea$ cd build/
wang@wang:~/projects/CircleArea/build$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wang/projects/CircleArea/build
wang@wang:~/projects/CircleArea/build$ make
[ 50%] Built target circle
[100%] Built target circlearea
wang@wang:~/projects/CircleArea/build$ ./circlearea 
The area of a circle of radius 5 is 78.5398
如果觉得这篇文章有用,可以扫免费红包支持。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值