目录
- 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命名进行条件编译