Linux环境下Cmake学习笔记

目录

单目录单个源文件

单目录多个源文件

多目录多个源文件

多目录多个源文件(标准工程)

自定义编译选项

  • linux下生成可执行文件过程:

单目录单个源文件

  • 有一个源文件main.cpp的情况
  • 对应的CMakeLists.txt文件

  • 执行cmake ./

  • 生成Makefile

  • 执行make

单目录多个源文件

  • 对应的CMakeLists.txt文件

  • 其他操作类似第一个案例演示。
  • 改进方法:

多目录多个源文件

  • 文件目录结构

  • mylib文件中的CMakeLists.txt

  • 主目录中的CMakeLists.txt

多目录多个源文件(标准工程)

  • 文件目录结构

  • src文件中的CMakeLists.txt

  • mylib文件中的CMakeLists.txt

  • 主目录中的CMakeLists.txt

  • 进入build目录下,注意cmake的路径为上一级目录

  • build目录下生成Makefile

【将生成的库文件放到指定的lib目录下,生成的可执行文件放在bin目录下】

  • mylib文件中的CMakeLists.txt

  • src文件中的CMakeLists.txt

自定义编译选项

  • 根据cmake定义的宏来进行条件编译
  • 工程目录结构

  • src中的源文件demo.cpp
#include <iostream>
#include "../config/config.hpp"
using namespace std;

#ifdef USE_MYMATH
  #include "../mylib/mymath.hpp"
#else
  #include <math.h>
#endif


int main(int argc,char *argv[])
{
	if(argc<3)
	{
		cout<<"Usage:"<<argv[0]<<endl;
		return 1;
	}
	double base =atof(argv[1]);
	int exponent=atoi(argv[2]);
#ifdef USE_MYMATH
	cout<<"mymath's result"<<endl<<power(base,exponent);
#else
    cout<<"standard-math's result"<<endl<<pow(base,exponent);
#endif
	return 0;
}
  • config.hpp.in文件

  • src文件中的CMakeLists.txt

  • 使用ccmake命名进行条件编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值