ubuntu下CMake学习

本文介绍如何使用CMakeLists.txt文件自动编译简单的C++程序,并链接自定义库。首先通过一个示例展示基本的编译流程,接着演示如何将自定义的库链接到主程序中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

转自:http://blog.youkuaiyun.com/yaked/article/details/49388715

参考网址:http://blog.youkuaiyun.com/wokaowokaowokao12345/article/details/50414468


1. 简单的利用CMakeLists.txt来自动编译程序

我们的程序源文件为main.cpp。放在目录CMake_learning/src下

  1. #include<iostream>  
  2.   
  3. int main()  
  4. {  
  5.     std::cout<<"Hello world!"<<std::endl;  
  6.   
  7.     return 0;  
  8. }  

为了编译该程序,我们的CMakeLists.txt如下
  1. project(main)  
  2. cmake_minimum_required(VERSION 2.8 FATAL_ERROR)  
  3. aux_source_directory(./src DIR_SRCS)  
  4. add_executable(main ${DIR_SRCS})  

第三行将当前目录所有的源文件都赋值给了DIR_SRCS。一般三、四行直接合并为一句
  1. add_executable(main src/main.cpp)  
建立一个名为build的文件夹

整个程序的目录结构如下


然后进入build文件夹,cmake .. 然后make



2. 程序链接自己创建的库

在src目录下新建两个文件,一个是hello_world.h

  1. #ifndef __HELLO_WORLD_H  
  2. #define __HELLO_WORLD_H  
  3.   
  4. void say_hello();  
  5.   
  6. #endif  

另一个是hello_world.cpp
  1. #include <iostream>  
  2.   
  3. void say_hello()   
  4. {  
  5.   std::cout<<"Hello Yake!"<<std::endl;  
  6. }  

main.cpp修改如下
  1. #include"hello_world.h"  
  2.   
  3. int main()  
  4. {  
  5.     say_hello();  
  6.   
  7.     return 0;  
  8. }  

CMakeLists.txt
  1. cmake_minimum_required(VERSION 2.8)  
  2.   
  3. project(main_with_lib)  
  4.   
  5. # Define a library target called hello_world  
  6. add_library(hello_world src/hello_world.cpp)  
  7.   
  8. add_executable(main_with_lib src/main.cpp)  
  9. target_link_libraries(main_with_lib hello_world )  
整个目录结构如下:

运行结果如下

要注意的是生成了一个链接库libhello_world.a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值